고루틴과 채널을 활용한 유사 액터 모델
액터 모델?
액터 모델은 동시성 문제를 해결하기 위해 등장한 개념입니다. 각 액터는 독립된 스레드에서 실행되며, 메시지를 통해 상호작용합니다. 액터 모델은 다음과 같은 특징을 가집니다.
- 액터는 메모리를 공유하지 않습니다.
- 액터는 고유의 상태를 가질 수 있습니다.
- 액터 간의 통신은 메시지를 통해 이루어집니다.
- 액터 간의 통신은 비동기적입니다.
- 액터는 해당 메시지에 대응하는 동작을 수행합니다.
CSP와 너무 잘 맞지 않아?
고 언어는 기반 패러다임에 CSP가 있는 만큼, 고루틴과 채널이라는 강력한 도구가 있습니다. 이를 이용해 타 언어에 비해 손 쉽게 액터 모델을 구현할 수 있습니다. 액터는 고루틴으로 띄우고, 메시지는 채널로 주고 받습니다. 그러면 자연스럽게 액터 간의 통신은 비동기적으로 동작합니다. 해당 메시지에 대해 라우팅이 필요한 경우에도, 여러 채널을 이용하여 select
문법을 통해 처리할 수 있습니다.