NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
hazard_pointer类 参考

险象指针句柄 更多...

#include <hazard_ptr.hpp>

Public 成员函数

 hazard_pointer (hazard_pointer_domain &domain)
 构造函数
 ~hazard_pointer ()
 析构函数
template<typename T>
T * protect (const atomic< T * > &src)
 保护一个原子指针
template<typename T>
bool try_protect (T *&ptr, const atomic< T * > &src)
 尝试保护一个原子指针
void reset_protection () noexcept
 重置保护
void swap (hazard_pointer &other) noexcept
 交换两个险象指针
 operator bool () const noexcept
 检查是否持有有效记录

详细描述

险象指针句柄

险象指针管理类,自动获取和释放记录。

在文件 hazard_ptr.hpp315 行定义.

构造及析构函数说明

◆ hazard_pointer()

hazard_pointer::hazard_pointer ( hazard_pointer_domain & domain)
inlineexplicit

构造函数

参数
domain险象指针域

从指定域获取一个险象指针记录。

在文件 hazard_ptr.hpp329 行定义.

◆ ~hazard_pointer()

hazard_pointer::~hazard_pointer ( )
inline

析构函数

释放持有的记录。

在文件 hazard_ptr.hpp339 行定义.

引用了 reset_protection().

成员函数说明

◆ operator bool()

hazard_pointer::operator bool ( ) const
inlineexplicitnoexcept

检查是否持有有效记录

返回
是否有效

在文件 hazard_ptr.hpp447 行定义.

◆ protect()

template<typename T>
T * hazard_pointer::protect ( const atomic< T * > & src)
inline

保护一个原子指针

模板参数
T指针类型
参数
src原子指针源
返回
受保护的指针

使用ABA预防算法:读取指针 -> 保护 -> 验证未改变。

在文件 hazard_ptr.hpp382 行定义.

引用了 atomic< T >::load(), memory_order_acquire , 以及 memory_order_relaxed.

◆ reset_protection()

void hazard_pointer::reset_protection ( )
inlinenoexcept

重置保护

清除当前保护的指针。

在文件 hazard_ptr.hpp428 行定义.

被这些函数引用 ~hazard_pointer().

◆ swap()

void hazard_pointer::swap ( hazard_pointer & other)
inlinenoexcept

交换两个险象指针

参数
other要交换的对象

在文件 hazard_ptr.hpp438 行定义.

引用了 swap().

◆ try_protect()

template<typename T>
bool hazard_pointer::try_protect ( T *& ptr,
const atomic< T * > & src )
inline

尝试保护一个原子指针

模板参数
T指针类型
参数
ptr输出参数,受保护的指针
src原子指针源
返回
是否成功保护

在文件 hazard_ptr.hpp406 行定义.

引用了 atomic< T >::load(), memory_order_acquire , 以及 memory_order_relaxed.


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