The Go Blog
並行性は並列性ではない
Goについて多くの人が知っていることが一つあるとすれば、それは並行性(concurrency)のために設計されているということです。Goの紹介は、そのゴルーチン(goroutine)とチャネル(channel)のデモンストレーションなしには完結しません。
しかし、人々は「並行性」という言葉を聞くと、しばしば「並列性」という、関連しているが全く異なる概念を思い浮かべます。プログラミングにおいて、並行性とは独立して実行されるプロセスの「構成」であり、並列性とは(関連する可能性のある)計算の同時「実行」です。並行性とは、一度に多くの物事を「扱う」ことです。並列性とは、一度に多くの物事を「行う」ことです。
この混同を解消するため、ロブ・パイクはHerokuのWazaカンファレンスで「並行性は並列性ではない」と題した講演を行い、その講演の録画は数ヶ月前に公開されました。
スライドはgo.dev/talksで入手できます(左右の矢印キーで操作してください)。
Goの並行性プリミティブについて学ぶには、「Goの並行性パターン」(スライド)をご覧ください。