實現互斥訪問的方式:使用臨界區物件、使用互斥物件和使用訊號量。
互斥對應乙個cmutex類的物件,只有擁有互斥物件的執行緒才具有訪問共享資源的許可權。使用互斥物件時必須首先為共享資料定義乙個全域性互斥物件。
定義後,呼叫lock()成員函式獲得互斥物件的擁有權,呼叫unlock()釋放擁有權。
示例:
#include#includeusing namespace std;
int array[10];
cmutex section;
uint wrtthrd(lpvoid param)
section.unlock();
return 0;
}
int main()
{ dword thrdid;
createthread(null, 0, (lpthread_start_routine)wrtthrd, null, 0, &thrdid);
sleep(15);
section.lock();
for(int i = 0; i < 10; i++)
{ cout輸出:
執行緒的互斥
我們可以用關鍵字private來保證資料物件只能被本類方法訪問,所以我們只需對方法提出一套機制,來對共享的資料物件進行互斥鎖定,這套機制就是執行緒的互斥使用關鍵字synchronized,有synchronized方法和synchronized塊兩種方法。舉例 模擬對銀行賬戶的訪問款操作 packa...
執行緒的互斥
執行緒需要互斥的原因 由於多個執行緒同時在程序的位址空間內部執行,所以程序的大部分資源相對於執行緒而言都是共享的,所以當多個執行緒同時對於某個臨界資源進行操作時,就會出現問題,所以,執行緒之間對於臨界資源的訪問需要互斥的進行訪問,以便造成不確定的結果。範例 include includeint va...
執行緒的互斥鎖
1.執行緒的互斥鎖 1.1.初始化 在linux下,執行緒的互斥量資料型別是pthread mutex t.在使用前,要對它進行初始化 對於靜態分配的互斥量,可以把它設定為pthread mutex initializer,或者呼叫pthread mutex init.對於動態分配的互斥量,在申請記...