MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
tree_barrier< CmplFunc > 模板类 参考

树形屏障 更多...

#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
 获取最大线程数

详细描述

template<typename CmplFunc>
class tree_barrier< CmplFunc >

树形屏障

模板参数
CmplFunc完成函数类型

基于树形算法的屏障实现,使用分层的票证机制减少竞争。 提供高性能的多线程同步,支持动态调整参与线程数。

在文件 barrier.hpp44 行定义.

构造及析构函数说明

◆ tree_barrier()

template<typename CmplFunc>
tree_barrier< CmplFunc >::tree_barrier ( const ptrdiff_t expected,
CmplFunc completion )
inline

构造函数

参数
expected期望的参与线程数
completion完成函数

在文件 barrier.hpp134 行定义.

引用了 _MSTL, count(), make_unique() , 以及 move().

成员函数说明

◆ arrive()

template<typename CmplFunc>
MSTL_NODISCARD arrival_token tree_barrier< CmplFunc >::arrive ( ptrdiff_t update)
inline

到达屏障点

参数
update到达线程数
返回
到达令牌

线程到达屏障点,可能触发完成函数并进入下一阶段。 支持批量到达。

在文件 barrier.hpp151 行定义.

引用了 memory_order_relaxed , 以及 memory_order_release.

被这些函数引用 arrive_and_drop().

◆ arrive_and_drop()

template<typename CmplFunc>
void tree_barrier< CmplFunc >::arrive_and_drop ( )
inline

到达并退出

线程到达屏障点后退出参与,减少期望线程数。

在文件 barrier.hpp190 行定义.

引用了 arrive() , 以及 memory_order_relaxed.

被这些函数引用 barrier< CmplFunc >::arrive_and_drop().

◆ max()

template<typename CmplFunc>
constexpr ptrdiff_t tree_barrier< CmplFunc >::max ( )
inlinestaticconstexprnoexcept

获取最大线程数

返回
支持的最大线程数

在文件 barrier.hpp125 行定义.

引用了 numeric_traits< T, Dummy >::max().

被这些函数引用 barrier< CmplFunc >::max().

◆ wait()

template<typename CmplFunc>
void tree_barrier< CmplFunc >::wait ( arrival_token && old_phase) const
inline

等待屏障

参数
old_phase到达令牌

等待屏障进入下一阶段,使用原子等待机制避免忙等待。

在文件 barrier.hpp177 行定义.

引用了 _MSTL, atomic_wait_address() , 以及 memory_order_acquire.


该类的文档由以下文件生成: