Skip to content

namespace ipc::shm

木头云 edited this page Jan 2, 2019 · 9 revisions

提供对共享内存(shared memory)的通用访问接口。

ipc::shm::acquire

void* acquire(char const * name, std::size_t size);

请求获取名为name,大小不小于size的一块共享内存。
若具有指定name的共享内存尚不存在,acquire将会新创建一块共享内存;
若具有指定name的共享内存已经存在,acquire将会尝试使用该共享内存。

参数
name 字符串,指定请求共享内存的名称
size 正整数,指定请求共享内存的大小
返回值
成功 现有的,或成功创建的共享内存地址
失败 nullptr

ipc::shm::release

void release(void* mem, std::size_t size);

释放acquire申请的共享内存。此操作不会立即销毁指定的共享内存;
当所有通过acquire指向此共享内存的引用全部释放后,release将会自动销毁该共享内存。

参数
mem 通过acquire获得的指针
size 正整数,指定调用acquire时请求的共享内存的大小(Windows下此参数可省略)

ipc::shm::handle

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引用的共享内存指针

Home
Tutorial

namespaces

classes

head files

Clone this wiki locally