고루틴과 채널을 활용한 유사 액터 모델

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

March 19, 2023 · snowmerak

고루틴 풀링

이 글은 제 레포를 기반으로 작성되었습니다. 왜? 오픈톡방에서 고루틴에 대한 이야기가 나왔었습니다. 고루틴을 안전하게 관리하기 위한 보일러플레이트에 대한 것과 join과 반환값의 처리에 대한 것이었습니다. 그래서 한번 해당 건에 대해 나름의 해답을 라이브러리로 만들어봤습니다. gopool GoPool type GoPool struct { pool sync.Pool max int64 count int64 running int64 sync.Mutex } 고풀 구조체는 고루틴을 풀링할 sync.Pool, 그리고 int64 타입의 max, count, running을 가집니다. max는 최대 고루틴 수, count는 현재 생성된 고루틴 수, running은 현재 실행되고 있는 고루틴 수를 의미합니다....

January 21, 2022 · snowmerak