1. 程式人生 > >VC常用執行緒同步方法

VC常用執行緒同步方法

臨界區:一種保證在某一時刻只有一個執行緒能訪問資料的簡便辦法。它只可以在同一程序內部使用。主要API函式有,產生臨界區:InitializeCriticalSection,刪除臨界區:DeleteCriticalSection,進入臨界區:EnterCriticalSection,退出臨界區:LeaveCriticalSection。

互斥體:互斥物件跟臨界區相似,但它不僅僅能夠在同一應用程式不同執行緒中實現資源的安全共享,而且可以在不同應用程式的執行緒之間實現對資源的安全共享,當然下面兩者也有這個特點。主要API函式有,建立互斥量: CreateMutex,開啟一個存在的互斥量: OpenMutex,釋放互斥量的使用權:ReleaseMutex,關閉互斥量: CloseHandle。

訊號量:使用訊號量(信標)最重要用途是:訊號允許多個執行緒同時使用共享資源,它指出了同時訪問共享資源的執行緒最大數目。它的API函式和使用方法都與互斥物件相似,如建立訊號燈:CreateSemaphore,傳入的引數可以指定訊號燈的初始值。

事件:用來通知其他程序/執行緒某件操作已經完成。API函式有建立,開啟事件物件等,特殊點的是可以用函式SetEvent人工設定事件為有無訊號狀態,因此建立事件物件時可以有兩種方式,一種為自動重置,一種為人工重置。只有人工重置方式建立的事件物件才能正確使用函式SetEvent。