當前位置:編程學習大全網 - 行動軟體 - Windows32 Thread API幾種***享數據互斥機制可以采用,如何應用

Windows32 Thread API幾種***享數據互斥機制可以采用,如何應用

Windows32 Thread API***享數據互斥機制總***有四種:事件(Event)、臨界區(Critical section)、互斥量(Mutex)、信號量(Semaphore)。現分別敘述如下:

1、 事件(Event):是WIN32提供的最靈活的線程間同步方式。

使用方法:

用CreateEvent創建壹個事件。對於需要手工設置的事件,在需要該事件或者事件發生時,采用SetEvent及ResetEvent來進行設置。

2、臨界區(Critical section):防止多個線程同時執行壹個代碼段。

使用方法:

1) 需要設置臨界區時,要先定義臨界區對象,采用CRITICAL_SECTION g_cs;

2) 使用前需初始化臨界區,采用InitializeCriticalSection(&g_cs);函數

3) 需要進入臨界區時,采用:EnterCriticalSection(&g_cs);函數,從而阻止其他的線程進入。

4) 離開臨界區時,采用:LeaveCriticalSection(&g_cs);,從而讓其他的線程可以進入該臨界區。

5) 當該臨界區不再有使用價值時,需銷毀臨界區,采用:DeleteCriticalSection(&g_cs);

3、互斥量(Mutex):互斥量通常用於協調多個線程或進程的活動,控制對資源的“鎖定”和“取消鎖定”,從而控制對***享資源的訪問。

使用方法:

1) 首先,建立互斥體對象,得到句柄使用HANDLE CreateMutex()函數;

2) 然後,在線程可能產生沖突的區域前調用WaitForSingleObject函數,將句柄傳給函數,請求占用互斥對象:dwWaitResult = WaitForSingleObject(hMutex,5000L);

3) ***享資源訪問結束,釋放對互斥體對象的占用:ReleaseMutex(hMutex);

4) 最後使用CloseHandle函數刪除互斥體對象。

4、信號量(Semaphore):信號對象允許多個有限個數的線程同時訪問***享資源。

使用方法:

1) 當需要信號量時要先調用CreateSemaphore函數創建信號量

2) 在需要請求資源時,調用WaitForSingleObject函數或者WaitForMultipleObject函數等待信號量。

3) 資源使用完畢後,調用ReleaseSemaphore函數釋放信號量

  • 上一篇:倫敦佬對抗活死人
  • 下一篇:怎麽用微信做電子通訊錄?
  • copyright 2024編程學習大全網