goroutineのスケジューリングについて
この動画がとてもわかりやすい。
ポイントとしては、
global/local queue: スケジューラーは global queue と goroutine ごとの local queue の二つを用いて job を管理している
work-stealing: アイドル状態のスレッドは他のスレッドから job を取ってくることができる
handoff: バックグランドスレッドが、ブロッキング状態にあるスレッドの local queue にある job を他のスレッドに委譲することができる
preemption: バックグラウンドスレッドが、長時間実行中の goroutine を検出し、可能であれば実行を止める
https://www.youtube.com/watch?v=YHRO5WQGh0k
goroutine がなんなのか、コードベースでも紹介してくれている
最適な goroutine の数について
channel の使い方について
channel の原理についての動画
https://www.youtube.com/watch?v=KBZlN0izeiY