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 ++はより抽象的な概念を提供します)