0
点赞
收藏
分享

微信扫一扫

量化交易之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;
}

举报

相关推荐

0 条评论