send와 receiveby Pigbrain

  • send는 메시지를 프로세스로 보내지 않는다
  • send는 메시지를 프로세스의 메일박스(mailbox)로 보낸다
  • receive는 그 메일박스에서 메시지의 제거를 시도한다
  • 얼랭에서 각 프로세스는 연결된 메일박스를 하나씩 가진다
  • 프로세스로 메시지를 보내면, 그 메시지는 메일 박스로 들어간다
  • 메일박스는 프로그램에서 receive문을 실행할 때만 검사된다



receive 처리 과정

  • receive 문에 진입하면 타이머가 시작된다
  • 메일박스에서 첫 번째 메시지를 가져와 패턴들과 매치를 시도한다
  • 만약 매치가 성공하면 메시지가 메일박스에서 제거되고, 패턴에 뒤따르는 코드가 실행된다
  • 반대로 어떠한 패턴과도 매치가 성공하지 않으면 메시지는 메일박스에서 제거되어 저장 큐(save queue)에 들어간다
  • 이어서 메일박스의 두 번째 메시지를 처리한다
  • 어떤 메시지가 매치되고 나면, 저장 큐에 들어갔던 메시지들은 모두 프로세스에 도착했던 순서대로 다시 메일박스로 들어간다
  • 만약 타이머가 경과하면 타임아웃의 코드들이 실행되고 저장되었던 메시지들은 모두 프로세스에 도착했던 순서대로 다시 메일박스로 들어간다
Published 03 August 2015