マルチスレッドのプログラミング

並行性と並列性

マルチスレッドプロセスがシングルプロセッサ上で動作する場合は、プロセッサが実行リソースを各スレッドに順次切り替えて割り当てるため、プロセスの実行状態は並行的になります。この並行性は、複数のスレッドが進行しているが、実際にはこれらのスレッドが同時には実行されていないことを示しています。スレッド間の切り替えが高速なため、スレッドが同時に実行されているように見える可能性があります。

同じマルチスレッドプロセスが共有メモリー方式のマルチプロセッサ上で動作する場合は、プロセス中の各スレッドが別のプロセッサ上で実行されるため、プロセスの実行状態は並列的になります。これが本来の同時実行です。プロセス内のスレッド数が利用可能なプロセッサ数に等しいか、それより少ない場合は、オペレーティングシステムのスレッドサポートシステムによって、各スレッドがそれぞれ別のプロセッサ上で実行されることが保証されます。たとえば、4 つのスレッドを使用してプログラミングされ、2 つのデュアルコアプロセッサを備えたシステム上で実行される行列の乗算では、結果の行を同時に計算するために 4 つのプロセッサコア上で各ソフトウェアスレッドを同時に実行できます。