並行性(Concurrency)と並列性(Parallelism)の違い
並行性はコードの性質を指し、並列性は動作しているプログラムの性質を指します。
Parallelismはランタイムの性質であってコードの性質ではない
同じコードを1コアマシンと2コアマシンで走らせた時の実際の動作は異なりうる
自分の書いた並行なコードが、実際に並列に走っているかどうか知らずに済む
並列性は時間やコンテキスト(Context)の機能である
Go以前ではOS threadが抽象化の最終地点だった。GoはOS threadの下に抽象化の層を追加した。OS threadについて考える必要はほとんどないことがわかった。
代わりに、Goroutine(ゴルーチン)とChannels(チャンネル)、ときに共有メモリによって設計すると、面白い性質がわかった→CSPがどう役に立つのか
CSP(Communicating Sequential Processes)
イベントの並行性
並行安全(concurrency-safe)