C 中 atomic和mutex的效率

2021-09-26 05:45:21 字數 986 閱讀 3162

由於「哪怕是對乙個bool型變數的賦值和讀取都不保證原子性「,所以在併發環境下,操作可能產生data race的變數需要人為的加以保護。

常用的措施

那麼這兩種措施效率如何呢?

atomic形式

可以得出結論,atomic的形式的效率在臨界區操作不複雜的情況下,要比互斥量的效率高很多。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

// atomic variable

//atomicat_var;

// normal global variable

unsigned

long at_var;

// mutex

mutex var_mutex;

// function for each thread's call

void

add_num

(const

int num)

// cout << this_thread::get_id() << endl;

}int

main()

// main thread waits all threads done

threads.

join_all()

; cout <<

"time: "

<<

clock()

- time_start << endl;

cout << at_var << endl;

return0;

}

C 中Mutex的用法

c 中mutex是互斥鎖,位於system.threading 命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒...

C 中Mutex的用法

c 中mutex是互斥鎖,位於system.threading 命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒...

C 中Mutex的用法

c 中mutex是互斥鎖,位於system.threading 命名空間中。顧名思義,它是乙個互斥的物件,同一時間只有乙個執行緒可以擁有它,該類還可用於程序間同步的同步基元。如果當前有乙個執行緒擁有它,在沒有釋放之前,其它執行緒是沒有權利擁有它的。我們可以把mutex看作洗手間,上廁所的人看作執行緒...