量化交易之c++篇 - boost库 - 多进程共享内存示例demo

// boost_main.cc

#include <iostream>

#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>

using namespace boost::interprocess;
using namespace std;


int main(int argc, const char *argv[]) {

    cout << "boost main cc" << endl;
    string share_name = "my_shared_memory";

    // 尝试删除共享内存对象 (同时判断某个共享内存是否存在)
    if(shared_memory_object::remove(share_name.c_str())) {
        // cout << "Shared memory object exists" << endl;
    } else {
        // cout << "Shared memory object does not exist" << endl;
    }

    string content = "hello, tqz";
    shared_memory_object shm(create_only, share_name.c_str(), read_write);

    // 设置共享内存大小
    shm.truncate(sizeof(content));


    // 创建映射区域
    mapped_region region(shm, read_write);
    // 获取映射区域地址
    void* addr = region.get_address();


    // 写入数据到共享内存中
    std::strcpy(static_cast<char*>(addr), content.c_str());
    std::cout << "write message: " << static_cast<char*>(addr) << std::endl;

    return 0;
}
// boost_interprocess.cc

#include <iostream>

#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>

using namespace boost::interprocess;
using namespace std;

int main(int argc, const char *argv[]) {

    cout << "boost interprocess cc" << endl;

    std::string shmName = "my_shared_memory";
    shared_memory_object shm(open_only, shmName.c_str(), read_write); // 打开共享内存对象
    mapped_region region(shm, read_write); // 映射共享内存到当前进程的地址空间中

    // 读取共享内存中的内容
    char* data = static_cast<char*>(region.get_address());
    std::cout << "Shared memory content: " << data << std::endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值