C++ - 헤더 파일로 만드는 actor 모델 라이브러리 - jacking75
- C++의 표준 라이브러리로만 구현(thread, chrono, mutex, atomic, queue)
- 성능보다 구성 요소의 작음을 우선
- 소스코드
actor 모델?
actor 모델은 병렬 계산의 수학적 모델의 일종이다.
병렬 처리 지향이라는 Erlang과 함수형 언어 Scala에서도 사용되고 있다.
- 어떤 actor 객체는 동시에 하나의(스레드, 프로세스, PC)상에서 동작한다.
- actor들은 메시지에 의한 비동기 통신을 실시한다.
- actor는 개별적으로 메시지 박스를 갖고 있다.
- 액터는 메시지의 송수신으로만 다른 actor와 데이터 교환을 실시한다.
actor 모델은 무엇이 좋을까?
- 액터의 받은 메시지에 대한 처리는 순차적으로 기재할 수 있다.(메시지 박스에 대한 데이터 입출력부 등은 동기 처리가 필요하지만 쉽게 은폐할 수 있다)
- 동기 처리에 의한 불필요한 대기 시간을 줄일 수 있다.
- lock을 거의 쓰지 않으므로 교착 상태 걱정이 없다.
- 메시지 이외의 입력이 없어서 처리를 파악하기 쉽다.
MiniActor
actor 모델에 기초한 프로그램을 실현하기 위해서 작성한 싱글 헤더 라이브러리이다.