std::shared_lock
來自 cppreference.com
定義於標頭檔案 <shared_mutex> |
||
template< class Mutex > class shared_lock; |
(C++14 起) | |
類 shared_lock
是一個通用共享互斥體所有權封裝器,允許延遲鎖定、定時鎖定和鎖所有權轉移。鎖定 shared_lock
會以共享模式鎖定關聯的共享互斥體(要以獨佔模式鎖定,可以使用 std::unique_lock)。
shared_lock
類是可移動的,但不可複製——它滿足 MoveConstructible 和 MoveAssignable 的要求,但不滿足 CopyConstructible 或 CopyAssignable 的要求。
shared_lock
滿足 Lockable 要求。如果 Mutex
滿足 SharedTimedLockable 要求,則 shared_lock
也滿足 TimedLockable 要求。
為了在共享所有權模式下在共享互斥體中等待,可以使用 std::condition_variable_any(std::condition_variable 需要 std::unique_lock,因此只能在獨佔所有權模式下等待)。
目錄 |
[編輯] 模板引數
Mutex | - | 要鎖定的共享互斥體型別。該型別必須滿足 SharedLockable 要求。 |
[編輯] 成員型別
型別 | 定義 |
mutex_type
|
Mutex
|
[編輯] 成員函式
構造一個 shared_lock ,可選地鎖定提供的互斥體(public member function) | |
解鎖關聯的互斥體 (public member function) | |
解鎖互斥體(如果擁有),並獲取另一個互斥體的所有權 (public member function) | |
| |
鎖定關聯的互斥體 (public member function) | |
嘗試鎖定關聯的互斥體 (public member function) | |
在指定持續時間內嘗試鎖定關聯的互斥體 (public member function) | |
在指定時間點之前嘗試鎖定關聯的互斥體 (public member function) | |
解鎖關聯的互斥體 (public member function) | |
修改器 | |
與另一個 shared_lock 交換資料成員(public member function) | |
在不解鎖的情況下解除互斥體的關聯 (public member function) | |
觀察器 | |
返回指向關聯互斥體的指標 (public member function) | |
測試鎖是否擁有其關聯的互斥體 (public member function) | |
測試鎖是否擁有其關聯的互斥體 (public member function) |
[編輯] 非成員函式
(C++14) |
特化 std::swap 演算法 (function template) |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2981 | C++17 | 提供了冗餘的 shared_lock<Mutex> 推導指南 |
已移除 |