-
Notifications
You must be signed in to change notification settings - Fork 336
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