-
Notifications
You must be signed in to change notification settings - Fork 366
namespace ipc::shm
木头云 edited this page Jan 2, 2019
·
9 revisions
提供对共享内存(shared memory)的通用访问接口。
void* acquire(char const * name, std::size_t size);
请求获取名为name
,大小不小于size
的一块共享内存。
若具有指定name
的共享内存尚不存在,acquire
将会新创建一块共享内存;
若具有指定name
的共享内存已经存在,acquire
将会尝试使用该共享内存。
参数 | |
---|---|
name |
字符串,指定请求共享内存的名称 |
size |
正整数,指定请求共享内存的大小 |
返回值 | |
---|---|
成功 | 现有的,或成功创建的共享内存地址 |
失败 | nullptr |
void release(void* mem, std::size_t size);
释放acquire
申请的共享内存。此操作不会立即销毁指定的共享内存;
当所有通过acquire
指向此共享内存的引用全部释放后,release
将会自动销毁该共享内存。
参数 | |
---|---|
mem |
通过acquire 获得的指针 |
size |
正整数,指定调用acquire 时请求的共享内存的大小(Windows下此参数可省略) |
class handle {
public:
handle();
handle(char const * name, std::size_t size);
handle(handle&& rhs);
~handle();
void swap(handle& rhs);
handle& operator=(handle rhs);
bool valid() const;
std::size_t size () const;
char const * name () const;
bool acquire(char const * name, std::size_t size);
void release();
void* get() const;
private:
class handle_;
handle_* p_;
};
共享内存对象,自动管理共享内存的生存周期,并提供基本操作的封装。
成员 | |
---|---|
handle |
构造函数 |
~handle |
析构函数 |
swap |
交换两个handle 的内容 |
operator= |
赋值操作 |
valid |
handle 有效性判断 |
size |
获取handle 引用的共享内存的大小 |
name |
获取handle 引用的共享内存的名称 |
acquire |
申请一块共享内存 |
release |
释放申请的共享内存 |
get |
获取handle 引用的共享内存指针 |
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