|
MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
FUTEX同步原语的跨平台封装 更多...
类 | |
| class | atomic_futex< WaiterBit > |
| 原子快速用户态互斥锁类模板 更多... | |
类型定义 | |
| using | platform_wait_t |
| 平台等待类型别名 | |
枚举 | |
| enum class | futex_wait_flags : platform_wait_t { futex_wait_flags::private_flag = 0 , futex_wait_flags::wait = 0 , futex_wait_flags::wake = 1 , futex_wait_flags::wait_bitset = 9 , futex_wait_flags::wake_bitset = 10 , futex_wait_flags::wait_private = wait | private_flag , futex_wait_flags::wake_private = wake | private_flag , futex_wait_flags::wait_bitset_private = wait_bitset | private_flag , futex_wait_flags::wake_bitset_private = wake_bitset | private_flag , futex_wait_flags::bitset_match_any = -1 } |
| FUTEX操作标志枚举 更多... | |
函数 | |
| template<typename Clock, typename Dur> | |
| bool | futex_wait_until (const platform_wait_t *addr, platform_wait_t old, const time_point< Clock, Dur > &timeout) |
| FUTEX定时等待函数 | |
| void MSTL_API | futex_wait (void *addr, platform_wait_t value) noexcept |
| 无限期等待FUTEX | |
| bool MSTL_API | futex_wait_until (void *addr, platform_wait_t value, bool has_timeout, int64_t sec, int64_t ns, bool is_monotonic=false) |
| 等待FUTEX直到指定时间点或条件满足 | |
| void MSTL_API | futex_notify (void *addr, bool all) noexcept |
| 通知等待的线程 | |
变量 | |
| template<typename T> | |
| MSTL_INLINE17 constexpr bool | platform_wait_valid_v |
| 检查类型是否适用于平台等待操作 | |
FUTEX同步原语的跨平台封装
| using platform_wait_t |
|
strong |
|
noexcept |
通知等待的线程
| addr | FUTEX变量的地址 |
| all | 是否通知所有等待线程 |
唤醒正在等待addr处值变化的线程。 如果all为true,唤醒所有等待线程;否则只唤醒一个等待线程。
引用了 MSTL_END_NAMESPACE__.
|
noexcept |
无限期等待FUTEX
| addr | FUTEX变量的地址 |
| value | 期望的值,只有当地址处的值等于此值时才等待 |
阻塞当前线程,直到addr处的值不等于value或收到通知。 这是最基本的FUTEX等待操作,没有超时限制。
| bool futex_wait_until | ( | const platform_wait_t * | addr, |
| platform_wait_t | old, | ||
| const time_point< Clock, Dur > & | timeout ) |
FUTEX定时等待函数
| Clock | 时钟类型 |
| Dur | 持续时间类型 |
| addr | 等待地址 |
| old | 期望的值 |
| timeout | 超时时间点 |
公共的FUTEX定时等待接口,支持任意时钟类型。
在文件 atomic_timed_wait.hpp 第 134 行定义.
| bool MSTL_API futex_wait_until | ( | void * | addr, |
| platform_wait_t | value, | ||
| bool | has_timeout, | ||
| int64_t | sec, | ||
| int64_t | ns, | ||
| bool | is_monotonic = false ) |
等待FUTEX直到指定时间点或条件满足
| addr | FUTEX地址 |
| value | 期望的值 |
| has_timeout | 是否启用超时。如果为false,则忽略时间参数 |
| sec | 超时时间的秒数部分 |
| ns | 超时时间的纳秒数部分 |
| is_monotonic | 是否使用单调时钟 |
阻塞当前线程,直到以下条件之一满足:
|
constexpr |
检查类型是否适用于平台等待操作
| T | 要检查的类型 |
类型必须满足以下条件: