日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stdthread(7)并发unique_lock

發布時間:2025/3/21 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stdthread(7)并发unique_lock 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. std::unique_lock與std::lock_guard類似。通過對lock和unlock進行一次薄的封裝,都能實現自動加鎖與解鎖功能,但是std::unique_lock要比std::lock_guard更靈活,占用空間相對更大一點且相對更慢一點。

1.1 主要成員函數

unique_lock() noexcept;//不管理任何 Mutex 對象explicit unique_lock(mutex_type& m); 管理 Mutex 對象 m,并嘗試調用 m.lock() 對 Mutex 對象進行上鎖,如果此時另外某個 unique_lock 對象已經管理了該 Mutex 對象 m,則當前線程將會被阻塞。 (創建的 unique_lock 對象通常擁有 Mutex 對象的鎖)unique_lock(mutex_type& m, try_to_lock_t tag); 管理 Mutex 對象 m,并嘗試調用 m.try_lock() 對 Mutex 對象進行上鎖,但如果上鎖不成功,并不會阻塞當前線程。unique_lock(mutex_type& m, defer_lock_t tag) noexcept; 管理 Mutex 對象 m,但是在初始化的時候并不鎖住 Mutex 對象。m 應該是一個沒有當前線程鎖住的 Mutex 對象。 (創建的則不會擁有鎖)unique_lock(mutex_type& m, adopt_lock_t tag); 管理 Mutex 對象 m, m 應該是一個已經被當前線程鎖住的 Mutex 對象。(并且當前新創建的 unique_lock 對象擁有對鎖(Lock)的所有權)。 (創建的 unique_lock 對象通常擁有 Mutex 對象的鎖)//相對時間 template <class Rep, class Period> unique_lock(mutex_type& m, const chrono::duration<Rep,Period>& rel_time); 試圖通過調用 m.try_lock_for(rel_time) 來鎖住 Mutex 對象一段時間(rel_time)//絕對時間 template <class Clock, class Duration> unique_lock(mutex_type& m, const chrono::time_point<Clock,Duration>& abs_time); 試圖通過調用 m.try_lock_until(abs_time) 來在某個時間點(abs_time)之前鎖住 Mutex 對象。unique_lock(const unique_lock&) = delete;//move unique_lock(unique_lock&& x);

eg .

std::mutex mut; void insert_data() { std::lock_guard<std::mutex> lk(mut); queue.push_back(data); } void process_data() { std::unqiue_lock<std::mutex> lk(mut); queue.pop(); } 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的stdthread(7)并发unique_lock的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。