c++不加鎖的多執行緒例項
#include #include using namespace std;
int num = 100;
void fun1()
else }
int main()
cout << "main thread" << endl;
for (int i=0; i<20; i++)
return 0;
}
顯示的結果如下:
mu.unlock(); //手動解鎖
}int main()
cout << "main thread" << endl;
for (int i=0; i<20; i++)
return 0;
}除了手動加鎖和解鎖外,c++也為我們提供了更便捷的使用方式:
lock_guardlock(mu); //當前函式結束,會自動釋放鎖
#include recursive_mutex mut; //同乙個執行緒可以多次新增鎖
//不推薦使用,一旦爆發問題,很難修復。
C 執行緒鎖(下)
前兩篇簡單介紹了執行緒同步lock,monitor,同步事件eventwaithandler,互斥體mutex的基本用法,在此基礎上,我們對它們用法進行比較,並給出什麼時候需要鎖什麼時候不需要的幾點建議。最後,介紹幾個fcl中線程安全的類,集合類的鎖定方式等,做為對執行緒同步系列的完善和補充。1.幾...
C 執行緒鎖(下)
前兩篇簡單介紹了執行緒同步lock,monitor,同步事件eventwaithandler,互斥體mutex的基本用法,在此基礎上,我們對它們用法進行比較,並給出什麼時候需要鎖什麼時候不需要的幾點建議。最後,介紹幾個fcl中線程安全的類,集合類的鎖定方式等,做為對執行緒同步系列的完善和補充。1.幾...
c 執行緒中的幾種鎖
這個是在中興面試中被面試問到的乙個題 你知道執行緒中的自旋鎖麼?我當時一臉懵逼,不知道。回來後整理下,在這裡對執行緒中的鎖進行乙個學習。執行緒之間的鎖有 互斥鎖 條件鎖 自旋鎖 讀寫鎖 遞迴鎖。一般而言,鎖的功能越強大,效能就會越低。1 互斥鎖 互斥鎖用於控制多個執行緒對他們之間共享資源互斥訪問的乙...