-
Notifications
You must be signed in to change notification settings - Fork 381
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::bufferipc::circ::elem_arrayipc::circ::queueipc::routeipc::channelipc::spin_lockipc::rw_lockipc::shm::handleipc::tls::pointeripc::mem::pool_alloc
head files