Concurrency in Go Chapter1 (1)
2 min readSep 24, 2017
“Concurrency in Go: Tools and Techniques for Developers”の1章 “An Introduction to Concurrency”の読書メモ。※ ”concurrent”は「並行」、”parallel”は「並列」と訳されることが多いと思うが、訳しても似すぎていてややこしいので原文のままの表記にする。
concurrencyはコンピューターサイエンスの重要なトピックの1つである。重要性が増していった原因はムーアの法則の限界とWebの普及にある。
ムーアの法則が限界を迎えたので、アムダールの法則が注目されるようになった。つまり1つのプロセッサの性能が頭打ちになったので、複数のプロセッサを同時に使用しないと、高速化を図ることができないのではないかと考えられるようになった。
2000年初頭にはクラウドコンピューティングの普及により、比較的安価に強大なマシンパワーを手に入れることができるようになっていたが、Webが一般的になったため、Webアプリケーションは膨大な同時アクセスを処理する必要があった。
Concurrencyが難しい理由
concurrentなコードを書く際に以下のような問題が発生しがちである。
- Race Conditions
- Atomicity
- Memory Access Synchronization
- Deadlock
- Livelock
- Starvation
問題の内容に関しては次回以降に書く。