執行緒安全 互斥鎖和原子變數的效率比較

2021-08-18 14:18:17 字數 753 閱讀 6261

多執行緒訪問共享資源的時候需要對執行緒進行互斥同步操作,在c++中可以選擇原子變數和c++11中的mutex互斥量物件來進行互斥操作,該文章簡單對兩種同步操作進行乙個效率的比較。

工具:vs2017

環境:window7  8核cpu

首先選擇mutex

**如下:

#include #include #includeusing namespace std;

int num;

mutex m;//互斥鎖

void run()

}int main()

}int main()

{ clock_t begin = clock();

thread t1(run);

thread t2(run);

t1.join();

t2.join();

clock_t end = clock();

cout << num << endl;

cout << end - begin << "ms"<執行結果:

多執行緒的互斥鎖和條件變數

執行緒間的互斥的同步一直是乙個很重要的地方,在這裡做個總結 所用的介面 int pthread create pthread t thread,const pthread attr t attr,void start routine void void arg void pthread exit v...

互斥鎖 死鎖與執行緒安全

一 典型的兩種死鎖情形 一 執行緒自己將自己鎖住 一般情況下,如果同乙個執行緒先後兩次呼叫lock,在第二次調 用時,由於鎖已經被占用,該執行緒會掛起等待占用鎖的執行緒釋放鎖,然而鎖正是被自己占用著的,該執行緒又被掛起而沒有機會釋放鎖,因此 就永遠處於掛起等待狀態了,於是就形成了死鎖 deadloc...

執行緒同步 互斥鎖 條件變數

在 執行緒同步 互斥鎖 一文中,我們分析了只用互斥鎖同步執行緒的弊端 cpu的效率和時效性不可兼得。下面,我們通過使用條件變數,在保證cpu效率的前提下,提高程式的時效性。只用互斥鎖同步執行緒,其cpu佔用率之所以高,是因為執行緒需要輪詢,即需要不停的檢查條件是否滿足。我們使用條件變數,當條件不滿足...