1章1章 並行性と並列性
本書は並行プログラミングに関する書籍であるが、並行性(concurrency)と似たような言葉に並列性(parallelism)という言葉があり、並行性と同時に並列性についても言及する。ところで、世の中を見渡してみると、並行性と並列性が同じ意味で利用されていることも多く、これらの単語の解釈について、しばしば混乱が見られる。そこで、本章では、並行プログラミングの説明を行う前に、並行性と並列性、この良く似た2つの概念について厳密に考察する。
1.1 プロセス
並行性と並列性の説明に移る前に、本節では、プロセスという用語と概念の定義を行う。存在論的に述べるならば、物事にはモノとプロセスがあり、モノとは空間的な広がりはあるが時間的な広がりはないような存在者で、プロセスは空間と時間の両方に広がりがあるような存在者となる。つまり、モノはある特定の時間で全体が存在するが、プロセスは特定の時間では部分しか存在しないような存在者である。例えば、サッカーボールはある時間で全体が存在するようなモノであるが、サッカーのゲームはある時間ではゲームの一部分しか存在せず時間的な広がりのあるプロセスである。
プロセスとはこのようにある種のカテゴリーを表す用語であるが、本書でプロセスと言ったときは、何らかの計算を行う抽象的な計算実行体という計算に関するプロセスのみを指す。そのようなプロセスには、例えば、画面に絵を描画するプロセス、テストの平均点を計算するプロセスなど、さまざまな計算、あるいは処理を行うプロセスが存在する。プロセスは、計算を完了させるためにいくつかのステップを経た後、最終的に計算を停止する(当然、計算が停止しない問題では計算は停止せず、永遠に実行中か待機中となる)。このプロセスは、本書では以下のように定義する。 ...
Get 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.