0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

並列と並行の整理

Last updated at Posted at 2025-10-05

1. Situation

1.a. この記事について

並列や並行といった言葉を使う際に少し悩むことがあったので整理します。
(本記事では、Task-Level Parallelを扱い、Data-Level Parallelについては触れません。)

1.b. 誤った解釈

以下の解釈は誤りを含んでいます

「マルチスレッドは並行処理であり、並列処理ではない」

1.c. CPUの基本的な話

並列や並行の話をする際の用語を抑えておきます。

用語 種類 説明 参考
CPU ハードウェア トランジスタなどで構成される、計算処理や制御処理の装置 Wikipedia, 富士通
Core ハードウェア CPUの中の演算単位。複数あると物理的に同時実行可能 Supermicro
OS ソフトウェア CPUを操作してプロセスやスレッドを管理する Wikipedia
Process ソフトウェア OSで管理される、実行中のプログラムの単位。独立したメモリ空間やリソースを持つ Wikipedia
Thread ソフトウェア プロセス内で命令を順に実行する単位。 Wikipedia
Runtime System ソフトウェア アプリケーションコードを実行するための仕組み。スレッドやメモリなどを管理 Wikipedia
用語 説明 参考
並行処理(concurrent) 複数の処理を同時に進めているように見える状態。必ずしも物理的に同時に動くわけではない。 Concurrent computing - Wikipedia
並列処理(parallel) 複数の処理が物理的に同時に実行されている状態。複数コアや演算ユニットが必要。 Parallel computing - Wikipedia

2. Complication

2.a. マルチスレッドは並行処理なのか?

必ずしも並行処理というわけではありません。
マルチスレッドが並列処理になる必要十分条件は、複数のスレッドが同時に実行される物理的リソース(CPUコアや演算ユニット)が存在し、それぞれのスレッドがそのリソース上で同時に命令を実行できることです。

具体例を次に示します。

  • CPUが2コア以上あり、2つのスレッドが同時に実行される場合 → 並列処理にすることができる
  • スレッド数がCPUコア数以下で順次実行される場合 → 並行処理(一部並列を含むこともある)

ただ、少なくとも、シングルコアで動いている場合は、マルチスレッドは並行処理といえます。

2.b. 各言語のライブラリについて

各言語のランタイムによって、並行処理や並列処理の仕組みは変わってきます。
適当にライブラリや言語仕様を把握しておくと理解が早いです。本ページでは深く触れませんが、軽くまとめます。

言語 並行処理有名ライブラリ 並列処理有名ライブラリ 備考
C++ std::threadstd::asyncOpenMP Open MPI 高速化としてSIMDなどもある(Data-Level Parallelのため本記事では扱わない)
Python threadingasyncioconcurrent.futures multiprocessingconcurrent.futures GILの影響でCPUバウンドのPythonコードは並列化できない場合があったが、3.13で改善されつつある(Exploring Python 3.13: Hands-On with the GIL Disablement)。また、concurrent.futuresは並列処理でも平行処理でも使えるため両方に配置をした。 加えて、asyncioはスレッドとしては一つで動くが、スケジューリングなどを考えると並行のように考えることができるため、そちらに配置をした。
Go goroutine goroutine GoのRuntimeが勝手に解釈し必要に応じて並列化てくれる。Container-aware GOMAXPROCS - The Go Programming Language, Goroutine はなぜ軽量スレッドと称されるのか; Orenge Diary
Rust std::threadasync/awaitTokiorayon-rs/rayon rsmpi rayonのドキュメントを見るとParallelという説明を多くされていますが、スレッドについて制御をしている文脈を感じ取ったため並行として分類した。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?