C ++マルチスレッドプログラミングの基本概念

1つ、スレッド

1.各プロセスには少なくとも1つのスレッド(メインスレッド)が含まれます

2.オペレーティングシステムによってCPU時間に割り当てられる最小のエンティティはスレッドです。つまり、スレッドは最小の実行ユニットです。

3.スレッドはプロセスに従属し、複数のスレッドが同じプロセスのメモリスペースを共有します。プロセスが終了すると、スレッドも強制的に終了してクリアされます。

4.各スレッドは独自のスタックリソースを持つことができます

第二に、スレッドの状態

ソース画像を表示

1.新規:新しいスレッドオブジェクトが作成されます

2.準備完了状態:スレッドオブジェクトが作成された後、他のスレッドはオブジェクトのstart()メソッドを呼び出します。この状態のスレッドは「実行可能なスレッドプール」にあり、実行可能になります。スレッドの実行条件が満たされ、CPUプロセッサを待機しています。

3.実行状態:スレッドはCPUで実行されています

4.ブロック状態:ブロック状態とは、何らかの理由(I / O操作、ミューテックスロックの解除、条件変数の変更など)でCPUを使用する権利を放棄し、一時的に実行を停止するスレッドです。スレッドが準備完了状態になるまで、実行状態に移行する機会があります。

5.終了状態:スレッド機能が終了するか、他のスレッドによってキャンセルされる状態。スレッド機能が占有していたオペレーティングシステムのリソースは解放されておらず、復活させることができます。

3、スレッド関数

スレッド作成後に実行される関数。この関数は当社がカスタマイズします。スレッド作成時に、関数はパラメーターとしてスレッド作成関数に渡されます。また、スレッド関数に必要なパラメーターを渡すこともできます。 。

たとえば、POSIXスレッドライブラリ:void * ThreadProc(void * arg); argは、スレッドに渡されるデータを参照します。

4、スレッドの識別

スレッドが作成されると、システムはスレッドIDとして一意のID番号を割り当てます。そのライフコースは、スレッドが作成されてからスレッドの終わりまでであり、オペレーティングシステムは自動的にIDを再利用します。

5つのC ++マルチスレッド開発方法

1.開発用にPOSIXマルチスレッドライブラリのAPI関数を使用します

2.開発にはC ++ 11の後に追加されたスレッドクラスを使用します(これは現在推奨されています。結局のところ、C ++はより抽象的な概念を提供します)

 

 

おすすめ

転載: blog.csdn.net/xunye_dream/article/details/110312908
おすすめ