命名空间
变体
操作

mtx_timedlock

来自 cppreference.cn
< c‎ | thread
在头文件 <threads.h> 中定义
int mtx_timedlock( mtx_t *restrict mutex,
                   const struct timespec *restrict time_point );
(C11 起)

阻塞当前线程,直到 mutex 指向的互斥锁被锁定,或者直到 time_point 指向的基于 TIME_UTC 的绝对日历时间点已经到达。

由于此函数接受一个绝对时间,如果需要一个持续时间,则必须手动计算日历时间点。

如果当前线程已经锁定了互斥锁且该互斥锁不是递归的,则行为是未定义的。

如果互斥锁不支持超时,则行为是未定义的。

先前对同一互斥锁的 mtx_unlock 调用与此操作(如果此操作成功)同步,并且任何给定互斥锁上的所有锁定/解锁操作形成一个单一的总顺序(类似于原子的修改顺序)

目录

[编辑] 参数

mutex - 指向要锁定的互斥量的指针
time_point - 指向绝对日历时间的指针,等待超时直到该时间

[编辑] 返回值

如果成功则返回 thrd_success,如果在互斥锁被锁定之前已达到超时时间则返回 thrd_timedout,如果发生错误则返回 thrd_error

[编辑] 参考

  • C17 标准 (ISO/IEC 9899:2018)
  • 7.26.4.4 mtx_timedlock 函数 (p: 278)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.26.4.4 mtx_timedlock 函数 (p: 381-382)

[编辑] 另请参阅

秒和纳秒时间
(struct)[编辑]
阻塞直到锁定互斥体
(function) [编辑]
锁定互斥体,如果已锁定则不阻塞返回
(function) [编辑]
解锁互斥体
(function) [编辑]
C++ documentation for timed_mutex::try_lock_until
C++ documentation for recursive_timed_mutex::try_lock_until

[编辑] 外部链接

GNU GCC Libc 手册: ISO-C-Mutexes