Topic 35 액터와 프로세스
데이비드 토머스, 앤드류 헌트
느낌표 ! (인상 깊은 문장 | 문맥)
액터는 자신만의 비공개 지역 상태를 가진 독립적인 가상 처리 장치다. 각 액터는 우편함을 하나씩 보유하고 있다.
p.259
프로세스는 본래 더 일반적인 가상 처리기로, 보통 운영 체제가 동시성을 지원하기 위하여 구현된다.
p.259
프로세스 별로 액터를 돌릴 수 있도록 구성하려는 것 같다.
액터는 언제나 동시성을 띤다
액터의 정의에서 찾아볼 수 없는 것이 몇 가지 있다.
- 액터를 관리하는 것이 하나도 없다.
- 시스템이 저장하는 상태는 오직 메시지 그리고 각 액터의 지역 상태뿐이다.
- 모든 메시지는 일방향이다. 답장이란 개념은 없다
- 액터는 각 메시지를 끝날 때까지 처리하고 중간에 다른 일을 하지 않는다. 즉, 한 번에 하나의 메시지만 처리한다.
그 결과 액터들은 아무것도 공유하지 않으면서 비동기적을 동시에 실행된다.
p.259-260
전역 상태를 사용하지 않기 위해 일방향으로 메시지를 전달하고 처리하도록 한다.
드러나지 않는 동시성
액터 모델에서는 동시성을 다루는 코드를 쓸 필요가 없다.
…
명시적으로 처음부터 끝까지 “이걸 한 다음 저걸 하라”는 코드를 쓸 필요도 없다. 액터가 수신하는 메시지에 따라 알아서 실행되기 때문이다.
p.265
동시성을 잘 사용한다는 것은 공유된 상태가 적을수록 좋다는 것을 의미하기도 하는 것 같다. 공유된 상태를 사용할 때 지저분하게 값을 수정하고 참조한다면 그것만큼 버그를 유발하고 찾기 어려운 것이 없지만 조금만 의식하지 않고 프로그래밍을 한다면 이와 같은 상황에 놓이기 십상이다.
Topic 35 느낌
Topic 35 에서는 최대한 독립적으로 작업을 실행해야 동시성 문제를 줄일 수 있다고 설명하고 있다.