- Notifications
You must be signed in to change notification settings - Fork 379
namespace ipc::shm
木头云 edited this page Mar 29, 2019 · 9 revisions
提供对共享内存(shared memory)的通用访问接口。
using id_t = void*;
用于操作共享内存的id类型,共享内存操作接口均通过id执行相关动作。
enum : unsigned { create = 0x01, open = 0x02 };
申请共享内存时使用的模式。
枚举 | |
---|---|
create | 创建模式,若共享内存不存在,则创建一个新的 |
open | 打开模式,若共享内存已存在,则打开它 |
id_t acquire(char const * name, std::size_t size, unsigned mode = create | open);
请求获取名为name
,大小不小于size
的一块共享内存。
参数 | |
---|---|
name | 字符串,指定请求共享内存的名称 |
size | 正整数,指定请求共享内存的大小 |
mode | 枚举值,参考:ipc::shm mode enum |
默认模式为create + open ,acquire 将会创建(若不存在)或打开(若存在)一块共享内存 | |
若模式为create ,且共享内存存在时,acquire 将会失败 | |
若模式为open ,且共享内存不存在时,acquire 将会失败。此模式忽略size 参数 | |
返回值 | |
成功 | 用于操作共享内存的id |
失败 | nullptr |
void * get_mem(id_t id, std::size_t * size);
通过id获取共享内存地址,并获得此共享内存的大小。
参数 | |
---|---|
id | id_t ,指定共享内存操作id |
size | std::size_t * ,指定用于获取共享内存大小的变量指针 |
若size 为空指针,则此参数忽略 | |
返回值 | |
成功 | 共享内存地址 |
失败 | nullptr |
void release(id_t id);
释放共享内存。此操作不会立即销毁指定的共享内存;
当所有此共享内存的引用全部释放后,release
将会自动销毁该共享内存。
参数 | |
---|---|
id | id_t ,指定共享内存操作id |
void remove(char const * name);
强制移除名字为name
的共享内存。
参数 | |
---|---|
name | 字符串,指定共享内存的名称 |
注意: | 此函数用于强制移除由于某些原因未被成功销毁的共享内存 |
移除一个正在使用中的共享内存可能会导致未定义错误 | |
此函数在Windows上不会做任何事 |
共享内存对象,自动管理共享内存的生存周期,并提供基本操作的封装。
namespaces
classes
ipc::buffer
ipc::circ::elem_array
ipc::circ::queue
ipc::route
ipc::channel
ipc::spin_lock
ipc::rw_lock
ipc::shm::handle
ipc::tls::pointer
ipc::mem::pool_alloc
head files