windows執行緒同步的幾種方法

2021-07-24 00:01:22 字數 2084 閱讀 3556

執行緒同步技術, windows

原子鎖  api

interlockedincrement(1個引數)

interlockeddecrement(1個引數)

臨界區void 初始化乙個臨界區

void initializecriticalsection(

lpcrittical_section lpcriricalsection // 臨界區變數

)進入臨界區

void entercriticalsection(

lpcritical_section lpcriricalsection // 臨界區

)離開臨界區

void deletecriticalsection(

lpcritical_section lpcriricalsection // 刪除臨界區.

)互斥:

當互斥鎖不被枷鎖時,有訊號,當互斥鎖上時,無訊號.

建立互斥

handle createmutex(

lpsecurity_attributes lpmutexattributes,

// 安全屬性

bool binitalowner,  // 初始的擁有者,false建立時沒有執行緒擁有互斥.

lpctstr lpname   // 命名

等候互斥

waitfor....

3 釋放互斥

bool releasemutex(

handle hmutex  // handle tomutex))

4. 關閉控制代碼.

5. 開啟互斥鎖

openmutex 通過名稱返回互斥控制代碼

事件建立事件

handle createevent( 

lpsecurity_attributes lpeventattributes, // sd

bool bmanualreset,                       // true手動將訊號轉變為無訊號

// false,自動設定復位

bool binitialstate,                      // false 初始狀態無訊號

lpctstr lpname                           // object name

);等候時間

將事件設定成有訊號狀態

bool setevent(hevent)

將事件設定成無訊號狀態

bool resetevent(hevent);

關閉事件

closehandle();

訊號量  handle createsemaphore(

lpsecurity_attributes lpsemaphoreattributes,

long linitialcount,  // 初始化訊號量數量3

long lmaximumcount,  // 訊號量的最大值 ?? 10

lpctstr lpname     // 命名

);建立成功返回訊號量控制代碼

等候訊號量

給訊號量指定新值

bool releasesemaphore(  handle hsemaphore,       // 訊號量

long lreleasecount,      // count increment amount     // 指定新值.

lplong lppreviouscount   // previous count    // 可以為null

);可等候定時器

等候函式:

waitformultipleobjects - 等候多個

dword waitformultipleobjects(

dword ncount,             // 控制代碼數量

const handle *lphandles,  // 控制代碼陣列

bool fwaitall,            // true 等待所有控制代碼都有訊號時返回,false 有乙個有訊號就返回

dword dwmilliseconds      // 超時時間infinite 代表永遠

);返回值是有訊號耳朵控制代碼在陣列裡的下標.

Windows執行緒同步

以下內容摘抄自 visual c 開發技術大全 為學習筆記。執行緒同步的方法有很多,最常用的有 互斥 cmutex 臨界 criticalsection 訊號量 semaphore 事件 event 等。這4種方式分別在 win32 和 mfc 兩種方式下各有一種實現,mfc 方式是對 win32方...

Windows執行緒同步

多執行緒程式中,多個執行緒在申請唯一份資源時,存在乙個隱患那就是重複使用。舉乙個例子,火車售票系統,一共100張票,用兩個執行緒來模擬售票。dword winapi fun1proc lpvoid lpparameter dword winapi fun1proc lpvoid lpparamete...

執行緒同步的幾種方式

程序中線程同步的四種常用方式 一 臨界區 ccriticalsection 當多個執行緒訪問乙個獨占性共享資源時,可以使用臨界區物件。擁有臨界區的執行緒可以訪問被保護起來的資源或 段,其他執行緒若想訪問,則被掛起,直到擁有臨界區的執行緒放棄臨界區為止。具體應用方式 1 定義臨界區物件ccritica...