Concurrency in Go Chapter2(1)

ConcurrencyとParallelismの違い

Concurrencyはコードの特性であり、Parallelismはプログラムのランタイムの特性である。Parallelismは同一時間に実行されることを指す。プログラムがParallelに動くかどうかは実行環境に依存している。(コードだけを見てもParallelに実行されるプログラムだと判断できない)シングルコアの環境でConcurrentなコードを実行したとしても、Parallelに動かず、逐次的に動くということである。

Concurrencyの例

タスク1とタスク2が存在するとする。Aさんがタスク1を10分実行し、その後タスク2を10分実行し、またその後タスク1を10分実行するなどのように、1人が複数のタスクを切り替えていく場合、タスクがConcurrentに実行されたと言える。

Parallelismの例

AさんとBさん、タスク1とタスク2が存在するとする。Aさんがタスク1を、Bさんがタスク2を同時に実行する場合、タスクがParallelに実行されたと言える。

補足

  • Rob Pike — ‘Concurrency Is Not Parallelism’
  • Rebuild: 158: Kill All The Threads (ko1, Matz)

--

--

Software engineer

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store