|
MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
闩锁类 更多...
#include <latch.hpp>
Public 成员函数 | |
| constexpr | latch (const platform_wait_t expected) noexcept |
| 构造函数 | |
| ~latch ()=default | |
| 析构函数 | |
| latch (const latch &)=delete | |
| 禁止拷贝构造 | |
| latch & | operator= (const latch &)=delete |
| 禁止拷贝赋值 | |
| MSTL_ALWAYS_INLINE void | count_down (const platform_wait_t update=1) |
| 减少计数器 | |
| MSTL_ALWAYS_INLINE bool | try_wait () const noexcept |
| 尝试等待 | |
| MSTL_ALWAYS_INLINE void | wait () const noexcept |
| 等待计数器为零 | |
| MSTL_ALWAYS_INLINE void | arrive_and_wait (const platform_wait_t update=1) noexcept |
| 减少计数器并等待 | |
静态 Public 成员函数 | |
| static constexpr platform_wait_t | max () noexcept |
| 获取闩锁的最大计数值 | |
闩锁类
闩锁是一种同步原语,用于协调多个线程的执行。 线程可以等待闩锁的计数器减为零,或者减少计数器并等待。 闩锁是一次性的,计数器减为零后不能被重置。
|
inlineexplicitconstexprnoexcept |
|
inlinenoexcept |
减少计数器并等待
| update | 减少的数量,默认为1 |
原子地减少计数器,然后等待计数器变为零。 这是一个组合操作,等价于先调用count_down()再调用wait()。
引用了 count_down() , 以及 wait().
|
inline |
减少计数器
| update | 减少的数量,默认为1 |
原子地减少闩锁的计数器。如果计数器减为零,则通知所有等待线程。
引用了 _MSTL, atomic_fetch_sub(), atomic_notify_address() , 以及 memory_order_release.
被这些函数引用 arrive_and_wait().
|
inlinestaticconstexprnoexcept |
|
inlinenoexcept |
尝试等待
非阻塞地检查闩锁的计数器是否为零。
引用了 _MSTL, atomic_load() , 以及 memory_order_acquire.
被这些函数引用 wait().
|
inlinenoexcept |
等待计数器为零
阻塞当前线程,直到闩锁的计数器减为零。
引用了 _MSTL, atomic_wait_address() , 以及 try_wait().
被这些函数引用 arrive_and_wait().