|
MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
树形屏障 更多...
#include <barrier.hpp>
Public 类型 | |
| using | arrival_token = byte_t |
| 到达令牌类型 | |
Public 成员函数 | |
| tree_barrier (const ptrdiff_t expected, CmplFunc completion) | |
| 构造函数 | |
| MSTL_NODISCARD arrival_token | arrive (ptrdiff_t update) |
| 到达屏障点 | |
| void | wait (arrival_token &&old_phase) const |
| 等待屏障 | |
| void | arrive_and_drop () |
| 到达并退出 | |
静态 Public 成员函数 | |
| static constexpr ptrdiff_t | max () noexcept |
| 获取最大线程数 | |
树形屏障
| CmplFunc | 完成函数类型 |
基于树形算法的屏障实现,使用分层的票证机制减少竞争。 提供高性能的多线程同步,支持动态调整参与线程数。
在文件 barrier.hpp 第 44 行定义.
|
inline |
构造函数
| expected | 期望的参与线程数 |
| completion | 完成函数 |
在文件 barrier.hpp 第 134 行定义.
引用了 _MSTL, count(), make_unique() , 以及 move().
|
inline |
到达屏障点
| update | 到达线程数 |
线程到达屏障点,可能触发完成函数并进入下一阶段。 支持批量到达。
在文件 barrier.hpp 第 151 行定义.
引用了 memory_order_relaxed , 以及 memory_order_release.
被这些函数引用 arrive_and_drop().
|
inline |
|
inlinestaticconstexprnoexcept |
获取最大线程数
在文件 barrier.hpp 第 125 行定义.
引用了 numeric_traits< T, Dummy >::max().
被这些函数引用 barrier< CmplFunc >::max().
|
inline |
等待屏障
| old_phase | 到达令牌 |
等待屏障进入下一阶段,使用原子等待机制避免忙等待。
在文件 barrier.hpp 第 177 行定义.
引用了 _MSTL, atomic_wait_address() , 以及 memory_order_acquire.