並行性【concurrency】コンカレンシー

概要

並行性とは、複数の処理やタスクが、ある特定の時間枠の中で同時に進行しているように見える状態のこと。単一のCPUでも実現でき、応答性や処理効率を高める目的で用いられる。
並行性のイメージ画像

一つのプログラムの中に独立した実行単位が複数存在し、これらが切り替えられながら少しずつ進んでいく状態を指す。CPUが単一のコアで構成されている場合でも、極めて短い時間ごとに処理対象を交互に切り替える「コンテキストスイッチ」(context switching)により、複数の処理が同時に動いているように振る舞わせることができる。

並行性と混同されやすい概念に、「並列性」(parallelism/パラレリズム)がある。これは複数のCPUやコアが物理的に同時に処理を実行する方式を指す。一方、並行性は、処理が物理的に同時かどうかを問わず、複数の処理が同時に実行状態に置かれ、自動的に進行していく様子を表す。並列性を含む、より広い概念と考えられる。

並行性を実現する実行単位としては、「プロセス」(process)や「スレッド」(thread)がある。プロセスはオペレーティングシステム(OS)が管理する実行単位で、スレッドはプロセスの中でさらに分割された軽量な実行単位である。あるプログラムを起動すれば、実行状態はプロセスとして管理され、プロセス内部でスレッドを立ち上げることで並行して複数の処理を進めることができる。一つのプログラムを複数回起動し、同じプログラムを並行して複数の異なるプロセスとして実行することもできる。

並行処理が可能なシステムでは、複数の処理が共有資源へ同時にアクセスする場合に、実行順序によって結果が変化する状態が生じることがある。共有資源をめぐって競合状態レースコンディション)やデッドロックなどの問題が発生する場合もあり、処理の順序を制御したり、排他制御など整合性を維持する仕組みが用いられる。

(2026.6.23更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。