Skip to Content
Go言語による並行処理
book

Go言語による並行処理

by Katherine Cox-Buday, 山口 能迪
October 2018
Beginner to intermediate
256 pages
3h 35m
Japanese
O'Reilly Japan, Inc.
Content preview from Go言語による並行処理

2章並行性をどうモデル化するか:CSPとは何か

2.1 並行性と並列性の違い

並行性並列性は異なるという事実は、しばしば見落とされたり誤解されています。開発者との会話で、この2つの用語はしばしば「何かが動作してるときに同時に別の何かが動作している」という意味で区別されずに使われています。「並列」という言葉をこの文脈で使うのは正しいのですが、通常開発者がコードについて話している場合、本当は「並行」という言葉を使っているはずです。

この違いを区別する理由は、計算機科学に詳しそうに振る舞うこと以上に意味があります。並行性と並列性の違いはコードの設計をする際に非常に強力な抽象化になることがわかり、そしてGoはこの違いを最大限に活かしています。これら2つの概念はどのように異なるのか、この抽象化の力を理解するために早速見てみましょう。まずとても単純な一文から考えてみます。

並行性はコードの性質を指し、並列性は動作しているプログラムの性質を指します。

これはちょっとおもしろい区別ですね。私たちはいつもこれら2つの事柄をこの一文と同様に考えているでしょうか。私たちはコードが並列に動作するように書いていますよね。

このことについてちょっと考えてみましょう。ある2つの領域が並列に動作するようにコードを書いたときに、プログラムが実行されてそれが実際に起こるという保証はあるでしょうか。もしマシンのCPUが1コアだったら何が起きるでしょうか。並列に動作すると思う人もいるかもしれませんが、それは真ではありません。

プログラム内のその2つの領域は並列に動作しているように見えますが、実際は見た目にはわからないほど素早く逐次実行をしています。CPUのコンテキストは異なるプログラムの間で時間を共有するために切り替わり、十分に大まかな時間感覚では、複数のタスクが並列に実行しているように見えるのです。同じプログラムのバイナリを2コアのマシンで実行すると、先のプログラムの2つの領域は実際に並列に動作しています。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

プログラミングC# 第8版

プログラミングC# 第8版

Ian Griffiths, 木下 哲也, 鈴木 幸敏
Javaパフォーマンス

Javaパフォーマンス

Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡
PythonによるWebスクレイピング 第2版

PythonによるWebスクレイピング 第2版

Ryan Mitchell, 黒川 利明, 嶋田 健志
UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

UXデザインの法則 ―最高のプロダクトとサービスを支える心理学

Jon Yablonski, 相島 雅樹, 磯谷 拓也, 反中 望, 松村 草也

Publisher Resources

ISBN: 9784873118468Other