以示例方式記錄mutex

2021-10-06 13:13:52 字數 1304 閱讀 6357

#include

#include

#include

#include

/** @desc std::mutex

* @constructor

* constexpr mutex() noexcept; // 只有乙個預設建構函式

* mutex (const mutex&) = delete; // 禁止拷貝構造

* @function

* mutext互斥量,為執行緒提供基本的互斥和同步工具,有效的保護多執行緒之間共享資料的資料安全。

* @method

* 1、mutext.lock():獲取mutext鎖,針對不同的場景會出現下面三種情況

* (1) 若該互斥量沒有被鎖住,則呼叫執行緒將該互斥量鎖住,直到呼叫unlock之前,該執行緒一直擁有鎖。

* (2) 若該互斥量被其他執行緒鎖住,則當前的呼叫執行緒被阻塞

* (3) 若該互斥量被當前執行緒鎖住,則產生死鎖(deallock)

* 2、mutext.try_lock():嘗試獲取mutex鎖,針對不同場景會出現下面三種情況

* (1) 該互斥量沒有被鎖住,則呼叫執行緒將該互斥量鎖住,直到呼叫unlock之前,該執行緒一直擁有鎖。【與lock相同】

* (2) 該互斥量被其他執行緒鎖住,嘗試lock失敗,返回false,不阻塞【與lock有區別】

* (3) 高互斥量被當前執行緒鎖住,則產生死鎖(deallock)

* 3、mutext.unlock():對mutex進行解鎖,釋放當前執行緒對mutex的所有權。

* @other

* std::recursive_mutex

* 支援遞迴的互斥量物件,允許同乙個執行緒內對mutex進行多次上鎖(即遞迴上鎖),來獲得互斥量物件的

* 多層所有權。注意:lock和unlock的呼叫必須一一對應,即呼叫次數相同。

*/std:

:mutex g_mtx;

int count;

void

threadwork()

intmain()

for(

auto

& th : threadvec)

std:

:cout << count << std:

:endl;

}

單例模式示例 以示例為例

單例模式示例 存檔日期 2019年5月13日 首次發布 2003年2月1日 從sax到rddl,社群標準在xml技術中起著非常重要的作用。xslt最重要的社群標準是exslt倡議,用於標準擴充套件功能和元素。在本文中,uche ogbuji使用實際示例來介紹和演示一些有用的exslt函式。此內容不再...

示例記錄(一)

1 異常處理 1 int getdivision int n else 9 catch exception ex 12 n 13return n 14 呼叫 getdivision 10 結果 13 2 找出陣列中唯未重複的數 陣列 1 2 找出資料組中未有重複的數3 param arr 陣列4 5...

遇到的C 常用mutex與lock記錄

互斥物件mutex std mutex std recursive mutex 遞迴 mutex 類 std timed mutex 定時 mutex 類 std recursive timed mutex 定時遞迴mutex類 boost mutex boost try mutex boost t...