CARLA
 
载入中...
搜索中...
未找到
Public 成员函数 | Private 属性 | 所有成员列表
carla::AtomicSharedPtr< T > 模板类 参考

线程安全的原子智能指针封装类 更多...

#include <AtomicSharedPtr.h>

+ 类 carla::AtomicSharedPtr< T > 继承关系图:
+ carla::AtomicSharedPtr< T > 的协作图:

Public 成员函数

template<typename... Args>
 AtomicSharedPtr (Args &&... args)
 构造函数,完美转发参数到shared_ptr
 
 AtomicSharedPtr (AtomicSharedPtr &&)=delete
 禁用移动构造函数
 
 AtomicSharedPtr (const AtomicSharedPtr &rhs)
 拷贝构造函数
 
bool compare_exchange (std::shared_ptr< T > *expected, std::shared_ptr< T > desired) noexcept
 原子比较并交换操作
 
std::shared_ptr< T > load () const noexcept
 原子加载当前指针值
 
AtomicSharedPtroperator= (AtomicSharedPtr &&)=delete
 禁用移动赋值运算符
 
AtomicSharedPtroperator= (const AtomicSharedPtr &rhs) noexcept
 拷贝赋值运算符
 
AtomicSharedPtroperator= (std::shared_ptr< T > ptr) noexcept
 智能指针赋值运算符
 
void reset (std::shared_ptr< T > ptr=nullptr) noexcept
 重置指针值
 
void store (std::shared_ptr< T > ptr) noexcept
 原子存储新的智能指针
 

Private 属性

std::shared_ptr< T > _ptr
 内部存储的智能指针
 

详细描述

template<typename T>
class carla::AtomicSharedPtr< T >

线程安全的原子智能指针封装类

AtomicSharedPtr提供了一个简单的原子操作智能指针实现,支持线程安全的共享指针操作。 使用release-acquire内存序来确保线程间的正确同步:

模板参数
T指针指向的数据类型

在文件 AtomicSharedPtr.h26 行定义.

构造及析构函数说明

◆ AtomicSharedPtr() [1/3]

template<typename T >
template<typename... Args>
carla::AtomicSharedPtr< T >::AtomicSharedPtr ( Args &&... args)
inlineexplicit

构造函数,完美转发参数到shared_ptr

模板参数
Args可变参数包类型
参数
args构造参数

在文件 AtomicSharedPtr.h38 行定义.

◆ AtomicSharedPtr() [2/3]

template<typename T >
carla::AtomicSharedPtr< T >::AtomicSharedPtr ( const AtomicSharedPtr< T > & rhs)
inline

拷贝构造函数

参数
rhs源对象

在文件 AtomicSharedPtr.h45 行定义.

◆ AtomicSharedPtr() [3/3]

template<typename T >
carla::AtomicSharedPtr< T >::AtomicSharedPtr ( AtomicSharedPtr< T > && )
delete

禁用移动构造函数

成员函数说明

◆ compare_exchange()

template<typename T >
bool carla::AtomicSharedPtr< T >::compare_exchange ( std::shared_ptr< T > * expected,
std::shared_ptr< T > desired )
inlinenoexcept

原子比较并交换操作

参数
expected预期的指针值
desired希望设置的新值
返回
操作是否成功

在文件 AtomicSharedPtr.h92 行定义.

引用了 carla::AtomicSharedPtr< T >::_ptr.

◆ load()

template<typename T >
std::shared_ptr< T > carla::AtomicSharedPtr< T >::load ( ) const
inlinenoexcept

原子加载当前指针值

返回
当前存储的智能指针

在文件 AtomicSharedPtr.h79 行定义.

引用了 carla::AtomicSharedPtr< T >::_ptr.

被这些函数引用 carla::client::detail::AtomicList< T >::Load() , 以及 carla::client::detail::Load().

+ 这是这个函数的调用关系图:

◆ operator=() [1/3]

template<typename T >
AtomicSharedPtr & carla::AtomicSharedPtr< T >::operator= ( AtomicSharedPtr< T > && )
delete

禁用移动赋值运算符

◆ operator=() [2/3]

template<typename T >
AtomicSharedPtr & carla::AtomicSharedPtr< T >::operator= ( const AtomicSharedPtr< T > & rhs)
inlinenoexcept

拷贝赋值运算符

参数
rhs源对象
返回
当前对象引用

在文件 AtomicSharedPtr.h123 行定义.

引用了 carla::AtomicSharedPtr< T >::store().

+ 函数调用图:

◆ operator=() [3/3]

template<typename T >
AtomicSharedPtr & carla::AtomicSharedPtr< T >::operator= ( std::shared_ptr< T > ptr)
inlinenoexcept

智能指针赋值运算符

参数
ptr要赋值的智能指针
返回
当前对象引用

在文件 AtomicSharedPtr.h113 行定义.

引用了 carla::AtomicSharedPtr< T >::store().

+ 函数调用图:

◆ reset()

template<typename T >
void carla::AtomicSharedPtr< T >::reset ( std::shared_ptr< T > ptr = nullptr)
inlinenoexcept

重置指针值

参数
ptr新的指针值,默认为nullptr

在文件 AtomicSharedPtr.h71 行定义.

引用了 carla::AtomicSharedPtr< T >::store().

+ 函数调用图:

◆ store()

template<typename T >
void carla::AtomicSharedPtr< T >::store ( std::shared_ptr< T > ptr)
inlinenoexcept

原子存储新的智能指针

参数
ptr要存储的新指针

在文件 AtomicSharedPtr.h59 行定义.

引用了 carla::AtomicSharedPtr< T >::_ptr.

被这些函数引用 carla::AtomicSharedPtr< T >::operator=(), carla::AtomicSharedPtr< T >::operator=() , 以及 carla::AtomicSharedPtr< T >::reset().

+ 这是这个函数的调用关系图:

类成员变量说明

◆ _ptr

template<typename T >
std::shared_ptr<T> carla::AtomicSharedPtr< T >::_ptr
private

内部存储的智能指针

在文件 AtomicSharedPtr.h132 行定义.

被这些函数引用 carla::AtomicSharedPtr< T >::compare_exchange(), carla::AtomicSharedPtr< T >::load() , 以及 carla::AtomicSharedPtr< T >::store().


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