| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | 所有成员列表
rm::AtomicSHM< T, typename > 模板类 参考
数据 IO 与通信模块 » 进程间通信

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
AtomicSHM & | operator= (const AtomicSHM &)=delete
AtomicSHM & | operator= (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
SHMBase & | operator= (const SHMBase &)=delete
SHMBase & | operator= (SHMBase &&)=default
void * | data () noexcept
| 获取共享内存映射指针
const void * | data () const noexcept
| 获取共享内存映射指针
bool | isCreator () const noexcept
| 是否为创建者

## 详细描述

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 | 要写入的数据

函数调用图: