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