Concurrency
Terminology
区別の基準
状態を共有するか
プリエンプティブか
各種コスト
生成
コンテキストスイッチ
OSのスレッドを使用するか
マルチコアの恩恵を受けられるか
Process
プログラムの実行単位
一般に状態を共有しない
OSのプロセス
Erlangの軽量プロセス
Thread
実行の脈絡(Thread of execution)より
状態を共有し得る
OSのスレッド
カーネルスレッドとかネイティブスレッドとか呼ばれる
Threads vs. processes
ユーザレベルで実装されたスレッド
グリーンスレッドって最近聞かなくなったな...
軽量スレッド
Task
ひとまとまりの仕事を漠然と指す語
ECMAscriptの Promise 相当のものはC#では Task
Coroutine, Fiber
接尾辞 co は協調を意味する (Cooperative vs Preemptive)
プリエンプションが起こらず、明示的に制御を返す
Boostの場合、Fiberにはスケジューラがあり、Coroutineにはそういったものがない
その他
Job - シェルでパイプラインで繋げて走らせてるそれとかこう呼ばれる
Distributed - 分散コンピューティング、分散システムなど
Implementation
TBA