名稱空間
變體
操作

C++ 命名要求: TimedMutex (自 C++11 起)

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
隨機數
併發
(C++11)
TimedMutex(定時互斥量)
(C++11)
Ranges
多維檢視
其他

 

TimedMutex 要求擴充套件了 TimedLockable 要求,以包含執行緒間同步。

目錄

[編輯] 要求

此外,對於 TimedMutex 型別的物件 m

  • 表示式 m.try_lock_for(duration) 具有以下特性
  • 行為類似於原子操作。
  • 嘗試在 duration 指定的持續時間內獲取互斥體的獨佔所有權。如果 duration 小於或等於 duration.zero(),則嘗試在不阻塞的情況下獲取所有權(如同透過 try_lock())。否則,此函式將阻塞,直到互斥體被獲取或直到 duration 指定的時間過去。它僅在成功時在 duration 內返回,但即使在 duration 期間的某個時間點它沒有被另一個執行緒擁有,也可能未能獲取互斥體。在任何情況下,如果互斥體被獲取,則返回 true,否則返回 false
  • 如果 try_lock_for(duration) 成功,則對同一物件先前的 unlock() 操作將與此操作同步(等同於釋放-獲取 std::memory_order)。
  • 如果呼叫執行緒已擁有互斥體,則行為未定義(除非 m 是 std::recursive_timed_mutex)。
  • 在執行過程中,時鐘、時間點或持續時間可能會丟擲異常(標準庫提供的時鐘、時間點和持續時間從不丟擲)。
  • 表示式 m.try_lock_until(time_point) 具有以下特性
  • 行為類似於原子操作。
  • 嘗試在 time_point 之前剩餘的時間內獲取互斥體的獨佔所有權。如果 time_point 已經過去,則嘗試在不阻塞的情況下獲取所有權(如同透過 try_lock())。否則,此函式將阻塞,直到互斥體被獲取或直到 time_point 指定的時間過去。它僅在成功時在 time_point 之前返回,但即使在 time_point 之前的某個時間點它沒有被另一個執行緒擁有,也可能未能獲取互斥體。在任何情況下,如果互斥體被獲取,則返回 true,否則返回 false
  • 如果 try_lock_until(time_point) 成功,則對同一物件先前的 unlock() 操作將與此操作同步(等同於釋放-獲取 std::memory_order)。
  • 如果呼叫執行緒已擁有互斥體,則行為未定義(除非 m 是 std::recursive_timed_mutex)。
  • 在執行過程中,時鐘、時間點或持續時間可能會丟擲異常(標準庫提供的時鐘、時間點和持續時間從不丟擲)。

[編輯] 標準庫

以下標準庫型別滿足 TimedMutex 要求

提供互斥設施,可以被遞迴鎖定
被同一執行緒鎖定並實現帶超時的鎖定
(類) [編輯]
提供共享互斥設施,並實現帶超時鎖
(類) [編輯]
提供互斥設施,實現帶超時的鎖定
(類) [編輯]

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2093 C++11 規範中缺少與超時相關的異常 已提及

[編輯] 參見