基本的な使用方法、Windowsのクリティカルセクション
CRITICAL_SECTIONのmy_winsc; //は、Windowsのクリティカルセクション、mutex変数の同等を定義します
InitializeCriticalSection(&my_winsc); //初期化
EnterCriticalSection(&my_winsc); //は、クリティカル領域、(ロックする同等を入力してください)
LeaveCriticalSection(&my_winsc); //は、クリティカル領域を残して、同等のロックを解除します()
スレッドthread_1印刷1-50、51-100スレッドthread_2を印刷
1の#include <iostreamの> 2の#include <はWindows.h> 3。の#include <スレッド> 4。 使用した 名前空間STD; 5 6。 INTカウント= 0 ; 7 CRITICAL_SECTIONのmy_winsc; // のWindowsのクリティカルセクションを画定する、ミューテックスに対応する 8。 9。 ボイドmythead_1() 10 { 11。 ための(int型 I = 0 ;私は< 50 ; Iは++ ) 12は 、{ 13は EnterCriticalSection(&my_winsc); //は(ロックに対応し、クリティカルセクションに入ります) 14 EnterCriticalSection(&my_winsc); //は、クリティカルセクション、ロック(と同等のものを入力してください) 15 カウント++ ; 16 coutの<<はstd :: :: this_thread GET_ID()<< " スレッド:" <<カウント<< てendl; 17 LeaveCriticalSection(&my_winsc ); // 、クリティカル領域を離れるUNLOCKに対応() 18である LeaveCriticalSection(&my_winsc); //は、クリティカル領域を離れるUNLOCKに対応する() 。19 } 20 } 21である 22である ボイド(mythread_2) 23は、 { 24 のために(INT I = 0。 I <50 ; 私は++ ) 25 { 26 EnterCriticalSection(&my_winsc)。 27 カウント++ ; 28 coutの<<はstd :: this_thread :: GET_ID()<< " 线程:" << <<カウントてendlを。 29 LeaveCriticalSection(&my_winsc)。 30 } 31 } 32 33 34 のint main()の 35 { 36 37 InitializeCriticalSection(&my_winsc)。 // 初始化 38 スレッドthread_1(mythead_1)。 39 スレッドthread_2(mythread_2)。 40 thread_1.join()。 41 thread_2.join()。 42 43 44 システム(" 一時停止" )。 45 リターン 0 ; 46 }
ミューテックスの第二に、異なるWindowsの重要な領域
1.mutexミューテックスは、独立した、重要な領域が別のミューテックス再帰的である第五章コントラストの前に、同じスレッドのエントリ関数を見つけ、一度だけロックすることができ、数回それがデッドロックになる場合が、例の複数のロックを使用し、ラインに対応する唯一の適切な数のロックを解除します
2.Windowsクリティカルセクションを初期化する必要があります