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)