cplusplus
.com
教程
參考
文章
論壇
C++
教程
參考
文章
論壇
參考
C 庫
<cassert> (assert.h)
<cctype> (ctype.h)
<cerrno> (errno.h)
C++11
<cfenv> (fenv.h)
<cfloat> (float.h)
C++11
<cinttypes> (inttypes.h)
<ciso646> (iso646.h)
<climits> (limits.h)
<clocale> (locale.h)
<cmath> (math.h)
<csetjmp> (setjmp.h)
<csignal> (signal.h)
<cstdarg> (stdarg.h)
C++11
<cstdbool> (stdbool.h)
<cstddef> (stddef.h)
C++11
<cstdint> (stdint.h)
<cstdio> (stdio.h)
<cstdlib> (stdlib.h)
<cstring> (string.h)
C++11
<ctgmath> (tgmath.h)
<ctime> (time.h)
C++11
<cuchar> (uchar.h)
<cwchar> (wchar.h)
<cwctype> (wctype.h)
容器
C++11
<array>
<deque>
C++11
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
C++11
<unordered_map>
C++11
<unordered_set>
<vector>
輸入/輸出
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
多執行緒
C++11
<atomic>
C++11
<condition_variable>
C++11
<future>
C++11
<mutex>
C++11
<thread>
其他
<algorithm>
<bitset>
C++11
<chrono>
C++11
<codecvt>
<complex>
<exception>
<functional>
C++11
<initializer_list>
<iterator>
<limits>
<locale>
<memory>
<new>
<numeric>
C++11
<random>
C++11
<ratio>
C++11
<regex>
<stdexcept>
<string>
C++11
<system_error>
C++11
<tuple>
C++11
<type_traits>
C++11
<typeindex>
<typeinfo>
<utility>
<valarray>
<mutex>
類
C++11
adopt_lock_t
C++11
defer_lock_t
C++11
lock_guard
C++11
mutex
C++11
once_flag
C++11
recursive_mutex
C++11
recursive_timed_mutex
C++11
timed_mutex
C++11
try_to_lock_t
C++11
unique_lock
函式
C++11
call_once
C++11
lock
C++11
try_lock
常量
C++11
adopt_lock
C++11
defer_lock
C++11
try_to_lock
timed_mutex
C++11
timed_mutex::~timed_mutex
C++11
timed_mutex::timed_mutex
成員函式
C++11
timed_mutex::lock
C++11
timed_mutex::native_handle
C++11
timed_mutex::try_lock
C++11
timed_mutex::try_lock_for
C++11
timed_mutex::try_lock_until
C++11
timed_mutex::unlock
參考
<mutex>
timed_mutex
lock
public member function
<mutex>
std::
timed_mutex
::lock
void lock();
鎖定 timed mutex
呼叫執行緒鎖定
timed_mutex
,如果需要則阻塞(行為與
mutex
完全相同)。
如果
timed_mutex
當前未被任何執行緒*鎖定*,則呼叫執行緒*鎖定*它(從此刻起,直到呼叫其成員函式
unlock
,該執行緒*擁有*
timed_mutex
)。
如果
timed_mutex
當前被另一個執行緒鎖定,則呼叫執行緒的執行將被阻塞,直到被另一個執行緒*解鎖*(其他未鎖定的執行緒將繼續執行)。
如果
timed_mutex
當前被呼叫此函式的同一執行緒鎖定,則會產生*死鎖*(具有*未定義行為*)。有關允許同一執行緒進行多次鎖定的* timed mutex 型別*,請參閱
recursive_timed_mutex
。
對
timed_mutex
的所有*鎖定*和*解鎖*操作遵循單一的總順序,所有*可見效果*都在*鎖定操作*和同一物件上的先前*
解鎖操作
*之間同步。
請注意,不同併發*鎖定*被排程返回的順序是不確定的,不一定與它們被鎖定的順序相關(取決於系統和庫實現)。
引數
無
返回值
無
資料競爭
timed_mutex
物件被修改為*原子操作*(不會導致資料競爭)。
異常安全
基本保證:
如果此成員函式丟擲異常,則
timed_mutex
物件仍處於有效狀態。此外,發起呼叫丟擲異常的執行緒不會獲得鎖。
如果
timed_mutex
已被當前執行緒鎖定,呼叫此函式會導致死鎖(*未定義行為*):在某些庫實現中,這會導致函式失敗。
如果呼叫失敗,將丟擲
system_error
異常
異常型別
錯誤條件
描述
system_error
errc::resource_deadlock_would_occur
檢測到死鎖(實現可能會檢測到某些死鎖情況)。
system_error
errc::operation_not_permitted
執行緒沒有執行該操作的許可權。
system_error
errc::device_or_resource_busy
正在操作的*原生控制代碼型別*已被鎖定。
根據庫實現的不同,此成員函式還可能丟擲異常來報告其他情況。
另見
timed_mutex::try_lock
如果未鎖定,則鎖定定時互斥量
(public member function)
timed_mutex::try_lock_for
嘗試按時間跨度鎖定
(public member function)
timed_mutex::try_lock_until
嘗試按時間點鎖定
(public member function)
timed_mutex::unlock
解鎖 timed mutex
(public member function)