Skip to content

namespace ipc::shm

木头云 edited this page Mar 29, 2019 · 9 revisions

提供对共享内存(shared memory)的通用访问接口。

ipc::shm::id_t

using id_t = void*;

用于操作共享内存的id类型,共享内存操作接口均通过id执行相关动作。

ipc::shm mode enum

enum : unsigned {
    create = 0x01,
    open   = 0x02
};

申请共享内存时使用的模式。

枚举
create 创建模式,若共享内存不存在,则创建一个新的
open 打开模式,若共享内存已存在,则打开它

ipc::shm::acquire

id_t acquire(char const * name, std::size_t size, unsigned mode = create | open);

请求获取名为name,大小不小于size的一块共享内存。

参数
name 字符串,指定请求共享内存的名称
size 正整数,指定请求共享内存的大小
mode 枚举值,参考:ipc::shm mode enum
默认模式为create + openacquire将会创建(若不存在)或打开(若存在)一块共享内存
若模式为create,且共享内存存在时,acquire将会失败
若模式为open,且共享内存不存在时,acquire将会失败。此模式忽略size参数
返回值
成功 用于操作共享内存的id
失败 nullptr

ipc::shm::get_mem

void * get_mem(id_t id, std::size_t * size);

通过id获取共享内存地址,并获得此共享内存的大小。

参数
id id_t,指定共享内存操作id
size std::size_t *,指定用于获取共享内存大小的变量指针
size为空指针,则此参数忽略
返回值
成功 共享内存地址
失败 nullptr

ipc::shm::release

void release(id_t id);

释放共享内存。此操作不会立即销毁指定的共享内存;
当所有此共享内存的引用全部释放后,release将会自动销毁该共享内存。

参数
id id_t,指定共享内存操作id

ipc::shm::remove

void remove(char const * name);

强制移除名字为name的共享内存。

参数
name 字符串,指定共享内存的名称
注意: 此函数用于强制移除由于某些原因未被成功销毁的共享内存
移除一个正在使用中的共享内存可能会导致未定义错误
此函数在Windows上不会做任何事

共享内存对象,自动管理共享内存的生存周期,并提供基本操作的封装。

Home
Tutorial

namespaces

classes

head files

Clone this wiki locally