RMVL  2.4.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::AtomicSHM< T, typename > 模板类 参考

MPMC 原子共享内存对象 更多...

#include <rmvl/io/ipc.hpp>

类 rm::AtomicSHM< T, typename > 继承关系图:
rm::AtomicSHM< T, typename > 的协作图:

Public 成员函数

 AtomicSHM (std::string_view name)
 构造 MPMC 共享内存对象
 AtomicSHM (const AtomicSHM &)=delete
 AtomicSHM (AtomicSHM &&)=delete
AtomicSHMoperator= (const AtomicSHM &)=delete
AtomicSHMoperator= (AtomicSHM &&)=delete
bool read (T &value) noexcept
 原子的获取共享内存中数据,当 empty() 为真时,行为未定义
void write (const T &value) noexcept
 向共享内存中原子的写入数据
bool empty () const noexcept
 判断是否为空 (从未写入过)
Public 成员函数 继承自 rm::SHMBase
 SHMBase (std::string_view name, std::size_t size)
 创建或打开共享内存对象并映射到当前进程地址空间
 ~SHMBase ()
 SHMBase (const SHMBase &)=delete
 SHMBase (SHMBase &&)=default
SHMBaseoperator= (const SHMBase &)=delete
SHMBaseoperator= (SHMBase &&)=default
void * data () noexcept
 获取共享内存映射指针
const void * data () const noexcept
 获取共享内存映射指针
bool isCreator () const noexcept
 是否为创建者

额外继承的成员函数

静态 Public 成员函数 继承自 rm::SHMBase
static void destroy (std::string_view name)
 显式移除指定名称的共享内存对象,Windows 平台下调用该函数无效果

详细描述

template<typename T, typename = std::enable_if_t<std::is_trivially_copyable_v<T>>>
class rm::AtomicSHM< T, typename >

MPMC 原子共享内存对象

模板参数
T共享内存数据类型

构造及析构函数说明

◆ AtomicSHM() [1/3]

template<typename T, typename Enable>
rm::AtomicSHM< T, Enable >::AtomicSHM ( std::string_view name)

构造 MPMC 共享内存对象

MPMC 原子共享内存对象

参数
[in]name共享内存名称
模板参数
T共享内存数据类型
函数调用图:

◆ AtomicSHM() [2/3]

template<typename T, typename = std::enable_if_t<std::is_trivially_copyable_v<T>>>
rm::AtomicSHM< T, typename >::AtomicSHM ( const AtomicSHM< T, typename > & )
delete
函数调用图:

◆ AtomicSHM() [3/3]

template<typename T, typename = std::enable_if_t<std::is_trivially_copyable_v<T>>>
rm::AtomicSHM< T, typename >::AtomicSHM ( AtomicSHM< T, typename > && )
delete
函数调用图:

成员函数说明

◆ empty()

template<typename T, typename Enable>
bool rm::AtomicSHM< T, Enable >::empty ( ) const
noexcept

判断是否为空 (从未写入过)

函数调用图:

◆ operator=() [1/2]

template<typename T, typename = std::enable_if_t<std::is_trivially_copyable_v<T>>>
AtomicSHM & rm::AtomicSHM< T, typename >::operator= ( AtomicSHM< T, typename > && )
delete
函数调用图:

◆ operator=() [2/2]

template<typename T, typename = std::enable_if_t<std::is_trivially_copyable_v<T>>>
AtomicSHM & rm::AtomicSHM< T, typename >::operator= ( const AtomicSHM< T, typename > & )
delete
函数调用图:

◆ read()

template<typename T, typename Enable>
bool rm::AtomicSHM< T, Enable >::read ( T & value)
noexcept

原子的获取共享内存中数据,当 empty() 为真时,行为未定义

返回
共享内存中的数据
函数调用图:

◆ write()

template<typename T, typename Enable>
void rm::AtomicSHM< T, Enable >::write ( const T & value)
noexcept

向共享内存中原子的写入数据

参数
[in]value要写入的数据
函数调用图: