3. 게임에서의 동시성 찾기
그래픽 시스템과 물리 시스템은 자료 주도적
( Data-Driven )
게임 플레이 시스템은 사건 주도적 ( Event-
Driven )
4. 행위자 기반 프로그래밍
( Actor-Based Programming )
프로그래밍 및 처리의 기본 단위가 행위자
(Actor)인 프로그래밍 패러다임
객체(Object)와 비슷하나 스스로 정보를 처
리하는 능력으로 객체와 구분 됨
메서드 호출이 아닌 메시지 전달을 통해 소
통 및 상호 작용
6. 메시지
메시지 대기열 성능이 행위자의 전반적인 성
능 영향 미침.
메시지 대기열에 사용할 컨테이너로 GPG08
에서는 tbb::concurrent_queue를 사용
tbb::concurrent_queue는 스레드에 안전한
다중 생산자 다중 소비 대기열 (MPMC)
하지만 Actor의 기능은 MPSC 이기 때문에
tbb::concurrent_queue는 오버 스펙
7. 메시지 전달시 고려 사항
다른 행위자의 상태를 조회해야 하는 경우
비동기이기 때문에 조회가 까다로울 수 있다.
약속 기법을 사용해 수신자가 전달자에게 상태를 알
려주도록 한다.
순차적인 메시지 처리
열쇠 넣기 -> 문 열기 메시지가 순서대로 도착할 보
장이 없음.
순차 행위자를 통해 메시지 순서를 보장.
또는 타임 스탬프를 이용해 먼저 온 메시지를 처리