#include #include #include #include #include #include #include #include #include #include #include #include pthread_mutex_t mutex;
int val = 0;
void *threadfunc(void *arg)
printf("val = %d\n" , val);
pthread_mutex_unlock(&mutex); /*釋放互斥鎖*/
usleep(20); }
return 0;
}int main()
互斥鎖實際上就是為了防止乙個執行緒在使用某一其他執行緒也能訪問到的變數時,其他執行緒也去使用這個變數,導致變數值不可**。
以上測試程式若注釋掉有注釋的三句話,也就是不使用互斥鎖,則實驗效果為
val在某一時刻正在自加的過程中被另乙個執行緒打斷,導致for迴圈沒有執行完,值不可控
若使用互斥鎖,則val永遠是以10000位單位自加
互斥鎖mutex的使用方法
一,鎖的建立 鎖可以被動態或靜態建立,可以用巨集pthread mutex initializer來靜態的初始化鎖,採用這種方式比較容易理解,互斥鎖是pthread mutex t的結構體,而這個巨集是乙個結構常量,如下可以完成靜態的初始化鎖 pthread mutex t mutex pthrea...
c 互斥鎖mutex使用方法
多執行緒修改基本資料型別時,也可能出現同步問題,哪怕時最簡單的累加操作。通過mutex在對同乙個資料操作時加鎖,實現了對資源的獨佔。pragma once include include include include using namespace std class mutextest prin...
互斥鎖的概念和使用方法。
在單執行緒條件下,由於對資料操作,在同樣的時間下,只有乙個執行緒來操作。所以不用擔心資料的同步問題。現代的作業系統,大都提供併發機制,雖然有時候是表面的併發。在linux中,併發用的最多的是基於執行緒的併發,程序的代價太高了,這樣,乙個共享的資料,在同一時間內,可能有多個執行緒在操作。如果沒有同步機...