C++中lock_guard的學習

lock_guard

  • 鎖守衛是一個管理mutex對象的對象,使其始終處于鎖定狀態。
  • 在構造時,mutex對象被調用線程鎖定,在銷毀時,mutex被解鎖。這是最簡單的鎖,作為一個自動持續時間的對象,它的作用特別大,可以持續到上下文結束。通過這種方式,它可以保證mutex對象在發生異常時被正確解鎖。
  • 但請注意,lock_guard對象并不以任何方式管理mutex對象的壽命:mutex對象的持續時間至少應延長到鎖定它的lock_guard被破壞為止。

代碼

// lock_guard example
#include <iostream>       // std::cout
#include <thread>         // std::thread
#include <mutex>          // std::mutex, std::lock_guard
#include <stdexcept>      // std::logic_errorstd::mutex mtx;void print_even (int x) {if (x%2==0) std::cout << x << " is even\n";else throw (std::logic_error("not even"));
}void print_thread_id (int id) {try {// using a local lock_guard to lock mtx guarantees unlocking on destruction / exception:std::lock_guard<std::mutex> lck (mtx);print_even(id);}catch (std::logic_error&) {std::cout << "[exception caught]\n";}
}int main ()
{std::thread threads[10];// spawn 10 threads:for (int i=0; i<10; ++i)threads[i] = std::thread(print_thread_id,i+1);for (auto& th : threads) th.join();return 0;
}

參考鏈接

  • lock_guard

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446863.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446863.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446863.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安卓四大組件簡介

安卓四大組件 Activity活動&#xff0c;Service服務&#xff0c;BroadcastRecevicer廣播接受器&#xff0c;Content Provider內容提供者 Activity活動 所有程序的流程都運行在activity中 Service服務 只能后臺運行&#xff0c;沒有界面的長生命周期的代碼 BroadcastRece…

WebLogic域的創建與發布

目錄一、前言二、準備三、創建域步驟第一步&#xff1a;直接【回車】第二步&#xff1a;直接【回車】第三步&#xff1a;直接【回車】第四步&#xff1a;輸入域名稱后【回車】第五步&#xff1a;直接【回車】第六步&#xff1a;直接【回車】&#xff08;此步驟是提示域的存放目…

安卓安卓移動操作系統優缺點

安卓移動操作系統優缺點 開發性 豐富的硬件 方便開發 gogle應用 安卓模擬器 手機,手表,電視,車載,安卓cel LogCat的使用–5級(日志) Log.v()–verbose全部信息,黑色 Log.d()–debug調試信息,藍色 Log.i()–info一般信息,綠色 Log.w()–warning警告信息,橙色 Log.e()–erro…

WebLogic啟動失敗:java.lang.AssertionError: Could not obtain the localhost address.

目錄一、錯誤信息二、解決方案第一步&#xff1a;查看本機計算機名稱第二步&#xff1a;編輯hosts文件一、錯誤信息 linux下啟動WebLogic報如下錯誤&#xff1a; 二、解決方案 此錯誤多半是hosts文件不對導致的。 解決步驟如下&#xff1a; 第一步&#xff1a;查看本機計…

sqlite_orm sync_schema源碼即翻譯

源碼 /*** This is a cute function used to replace migration up/down functionality.* It performs check storage schema with actual db schema and:* * if there are excess tables exist in db they are ignored (not dropped)* * every table from storage is comp…

安卓布局UI簡介

安卓UI 用戶界面UI&#xff08;使用者界面&#xff09; ——系統和用戶之間進行交互和信息交換的媒體 由布局和組件組成 軟件設計&#xff1a;編碼設計和UI設計 布局 ——可定義應用中的界面結構 所有元素都使用View和Viewgroup對象的層次結構進行構建 view微件——構建用戶…

Windows查找JDK的路徑

第一步&#xff1a;確定是否安裝JDK 在控制臺輸入&#xff1a; java -version輸出結果&#xff1a; 此時說明你電腦安裝了JDK。 第二步&#xff1a;查找路徑 然后在控制臺輸入&#xff1a; java -verbose輸出結果&#xff1a; 從最后的jre目錄可以找到相應的jdk目錄。 …

boost官方文檔同步機制Synchronization mechanisms overview

參考鏈接 官方文檔 Synchronization mechanisms overview Named And Anonymous Synchronization MechanismsTypes Of Synchronization Mechanisms如前所述&#xff0c;如果不能有效地同步對內存的訪問&#xff0c;那么通過內存映射文件或共享內存對象在進程之間共享內存的能力…

安卓布局中xml文件屬性和ID簡介

編寫xml屬性 加載xml資源 當編譯應用時&#xff0c;系統會將每個xml文件編譯為view資源 屬性 xml屬性&#xff1a;特有屬性&#xff0c;共有屬性&#xff0c;其他屬性&#xff08;布局參數&#xff09; ID ——在結構樹中對view對象唯一標識 編譯應用后&#xff0c;系統以…

Java監控工具VisualVM

目錄一、簡介二、內存分析1、Heap堆三、CPU分析四、線程分析一、簡介 VisualVM 是一款免費的&#xff0c;集成了多個JDK命令行工具的可視化工具&#xff0c;它能為您提供強大的分析能力&#xff0c;對Java應用程序做 性能分析和調優 。這些功能包括 生成和分析海量數據、跟蹤內…

對官方Mutexes的翻譯

參考鏈接 參考鏈接 Mutexes Whats A Mutex?Mutex OperationsBoost.Interprocess Mutex Types And HeadersScoped lockAnonymous mutex exampleNamed mutex example Whats A Mutex? 互斥是相互排斥的意思&#xff0c;它是進程之間最基本的同步形式。互斥保證只有一個線程可…

計算機應用基礎

計算概論知識點 1.計算機之父&#xff1a;馮.諾伊曼 計算機基本組成&#xff1a;運算器&#xff0c;控制器&#xff0c;存儲器&#xff0c;輸入設備&#xff0c;輸出設備 2.幾種計算機&#xff1a;臺式計算機,筆記本式計算機,PC服務器,平板式計算機… 3.電腦的硬件&#xff1a;…

Android最全UI庫合集

目錄抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新ViewPager圖表(Chart)菜單(Menu)浮動菜單對話框空白頁滑動刪除手勢操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar選擇器(Picker)跑馬燈日歷時間主題樣式ImageView通知聊天…

對于boost鎖機制結論性的介紹

Conditions Whats A Condition Variable?Boost.Interprocess Condition Types And HeadersAnonymous condition example Whats A Condition Variable? 在前面的例子中&#xff0c;一個mutex被用來鎖定&#xff0c;但我們不能用它來有效地等待&#xff0c;直到滿足繼續的條件…

C++數據類型

C 數據類型 |–基本數據類型: 整型 short短整型 2 int基本整型4 long長整型 8 浮點型 float單精度型 4 double雙精度型 8 long double長雙精度型 16 字符型 char 1 邏輯型 bool 1 空類型 void |–構造類型 數組類型 構造體類型 struct 共用體類型 union 枚舉類型 enum 類類型…

Android Gradle 多渠道打包、動態配置AppName

目錄一、簡介二、Gradle多渠道打包1、普通做法2、Gradle多渠道打包一、簡介 因為國內Android應用分發市場的現狀&#xff0c;我們在發布APP時&#xff0c;一般需要生成多個渠道包&#xff0c;上傳到不同的應用市場。這些渠道包需要包含不同的渠道信息&#xff0c;在APP和后臺交…

boost鎖機制中Semaphores的介紹

結構 Whats A Semaphore?Boost.Interprocess Semaphore Types And HeadersAnonymous semaphore example Whats A Semaphore? 旗語是一種基于內部計數的進程間同步機制&#xff0c;它提供了兩種基本操作。等待&#xff1a;測試旗語數的值&#xff0c;如果小于或等于0&#x…

Android Gradle 批量修改生成的apk文件名

目錄一、簡介二、代碼實現1、 Gradle 3.0以下版本2、Gradle 3.0以上版本一、簡介 平時開發都知道&#xff0c;我們要上線的時候需要在Android studio打包apk文件&#xff0c;可是默認的打包名是app-release.apk或者app-debug.apk這樣的名字&#xff0c;太沒有辨識度了。 下面…

C++boost Class named_condition翻譯

Class named_condition boost::interprocess::named_condition 簡介 // In header: <boost/interprocess/sync/named_condition.hpp>class named_condition { public:// construct/copy/destructnamed_condition(create_only_t, const char *, const permissions &…