C 多執行緒,unique lock

2021-09-28 16:50:59 字數 1137 閱讀 1715

lock_guard

unique_lock: 缺省會自己加鎖和釋放鎖

uniquq_lock的第二個引數

mutex mymutex;

std::unique_lock

mylock

(mymutex,std::adopt_lock)

;std::unique_lock

mylock

(mymutex,std::try_to_lock)

;std::unique_lock

mylock

(mymutex,std::defer_lock)

;

使用方法如下:

mutex mymutex;

std::unique_lock

mylock

(mymutex,std::defer_lock)

;mylock.

lock()

;mylock.

unlock()

;bool ifgetlock = mylock.

try_lock()

;mutex* ptr = mylock.

release()

;

所有權問題,unique是和mutex繫結到一起的,但是可以解除繫結和移交所有權

轉移所有權方法:

unique_lock

mysblockone

(mylock)

;unique_lock

mysblocktwo

(move

(mysblockone)

);

為什麼有時候需要unlock,因為lock住的**段越少,程式效率越高,有人把鎖住的**段叫做粒度,越多叫粗,執行效率低;少叫細,執行效率高

粒度粗影響效率,細影可能沒保護**

粒度的粗細反應的是工程師的能力和實力

執行緒休眠函式:

chrono::seconds dura(2

);this_thread::

sleep_for

(dura)

;

C 多執行緒 unique lock

基本上是對std unique lock的翻譯。unique lock比lock guard更加靈活,不單單是通過控制物件的構造與析構來實現lock和unlock,因為其有lock和unlock的成員函式,而lock guard只有構造和析構函式。乙個unique lock物件用來管理mutex物件...

c 多執行緒unique lock詳解

unique lock是個類模板,工作中,一般lock guard 推薦使用 lock guard取代了mutex的lock 和unlock unique lock比lock guard靈活很多,效率上差一點,記憶體占用多一點。lock guard可以帶第二個引數 std lock guardsbg...

c 多執行緒程式設計 unique lock

unique lock是乙個比lock guard功能更加強大的加鎖機制。它可以提供彈性加鎖服務。即使用者指定加鎖的地方,也可以指定解鎖的地方。還可以將鎖的所有權進行轉讓。以下 除了第一行都可以預設。std unique lock std mutex locker mu,std defer lock...