コンピュータ

マルチスレッドとは

マルチスレッド

マルチスレッドとは

マルチスレッドとは、1つのコンピュータプログラムを実行する際に、複数の処理の流れを並行して進行することです。

コンピュータプログラムは、基本的に分岐やループがあっても、プログラム全体は1つの流れになっており、このような一連のプログラムの流れを実行する実行単位を「スレッド」といいます。

1つのスレッドで動作させる手法を「シングルスレッド」といい、たいていのプログラムはシングルスレッドで動作します。

シングルスレッド

それに対し、処理効率を上げるなどの目的で、複数の処理を並行して行うことができます。このように1つのプログラムで複数のスレッドを同時に動作させる手法を「マルチスレッド」といいます。

マルチスレッド

ここがポイント

  • シングルスレッド:1つのスレッドで動作(1つのスレッドで順番に処理を実行)
  • マルチスレッド:複数のスレッドで動作(複数のスレッドで処理を並行して実行)

マルチスレッドの注意点

マルチスレッドは、複数の処理を並行して実行できるため、単純にパフォーマンスが向上すると考えがちですが、そうとも限りません。

スレッドの仕組みを理解し、マルチスレッドでパフォーマンスが向上する場面を見極めてマルチスレッド化を行わないと、逆にパフォーマンスが低下したりすることもあります。

また、パフォーマンスの低下以外にも、マルチスレッドを採用する場合、さまざまなリスクがあることを認識しておくことが大切です。特に注意が必要なのがデッドロックです。

スポンサーリンク

デッドロックとは、お互いのスレッドが待ち状態(例:スレッドAがスレッドBの処理待ち、スレッドBがスレッドAの処理待ち、結果、どちらのスレッドも待ち状態となり、処理が止まってしまう)となり、どちらのスレッドも処理が進行できなくなって止まってしまう現象のことです。

マルチスレッドを採用する場合、プログラムを複数のスレッドで並行に実行しても、問題が生じない作りにする必要があります。

このような作りを「スレッドセーフ」といいます。

マルチスレッドの並行処理と並列処理

基本的に、CPUは一度に1つの処理しか実行できません。

そのため、1つのCPUでマルチスレッドはできないと思ってしまいますが、1つのCPUでもマルチスレッドはできます。

CPUの利用時間を細かく分割して順番に割り当てることでマルチスレッドを実現しています。(疑似的に複数のCPUがあるように振る舞う)

シングルスレッド

マルチスレッドの並行処理

 

それに対し、CPUやCPUコアが複数あるコンピュータでは同時に複数のスレッドを実行できるので、同じマルチスレッドでも処理効率は飛躍的に向上します。

マルチスレッドの並列処理

helpful