Windowsのクリティカルセクションを使用します

基本的な使用方法、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クリティカルセクションを初期化する必要があります

 

おすすめ

転載: www.cnblogs.com/main404/p/11294327.html