Go, Kotlin, Erlang의 동시성 모델: 누가 전환을 통제하는가?
Not sure where I am going with this garbage collection rabbit hole

Go, Kotlin, Erlang/Elixir(BEAM)는 각각 다른 방식으로 M:N 스케줄러를 구현한다. 핵심은 작업 전환을 누가 통제하고, 안전한 전환을 위해 무엇을 알아야 하는가이다. Go는 비협조적 선점을 위해 SIGURG 신호를 사용하며, GC의 STW(Stop-The-World) 문제를 해결한다. Kotlin은 코루틴과 디스패처를, Erlang은 프로세스와 사전 예방적 스케줄링을 사용한다. 이 문서는 각 모델의 설계 제약과 GC에 미치는 영향을 분석한다.
신호 기반 비동기 선점은 실제로 호출되기 전까지 비용이 들지 않기 때문에 엄격히 더 저렴했다.