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

一つのプログラムの中に独立した実行単位が複数存在し、これらが切り替えられながら少しずつ進んでいく状態を指す。CPUが単一のコアで構成されている場合でも、極めて短い時間ごとに処理対象を交互に切り替える「コンテキストスイッチ」(context switching)により、複数の処理が同時に動いているように振る舞わせることができる。
並行性と混同されやすい概念に、「並列性」(parallelism/パラレリズム)がある。これは複数のCPUやコアが物理的に同時に処理を実行する方式を指す。一方、並行性は、処理が物理的に同時かどうかを問わず、複数の処理が同時に実行状態に置かれ、自動的に進行していく様子を表す。並列性を含む、より広い概念と考えられる。
並行性を実現する実行単位としては、「プロセス」(process)や「スレッド」(thread)がある。プロセスはオペレーティングシステム(OS)が管理する実行単位で、スレッドはプロセスの中でさらに分割された軽量な実行単位である。あるプログラムを起動すれば、実行状態はプロセスとして管理され、プロセス内部でスレッドを立ち上げることで並行して複数の処理を進めることができる。一つのプログラムを複数回起動し、同じプログラムを並行して複数の異なるプロセスとして実行することもできる。
並行処理が可能なシステムでは、複数の処理が共有資源へ同時にアクセスする場合に、実行順序によって結果が変化する状態が生じることがある。共有資源をめぐって競合状態(レースコンディション)やデッドロックなどの問題が発生する場合もあり、処理の順序を制御したり、排他制御など整合性を維持する仕組みが用いられる。
(2026.6.23更新)