C 執行緒的鎖

2021-10-08 04:15:22 字數 834 閱讀 9213

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 互斥鎖 互斥鎖用於控制多個執行緒對他們之間共享資源互斥訪問的乙...