当前位置: 首页 > wzjs >正文

扬州专业网站制作谷歌浏览器下载官方正版

扬州专业网站制作,谷歌浏览器下载官方正版,拷贝字体到wordpress,域名解析ip138在线查询Boost共享内存 以下是Boost共享内存的详细使用指南&#xff0c;包含完整C代码和分步解析&#xff0c;涵盖基础操作和高级应用场景&#xff1a; 一、Boost共享内存核心组件 shared_memory_object 用于创建/打开共享内存对象&#xff0c;需指定名称和访问模式。 #include <…

Boost共享内存

以下是Boost共享内存的详细使用指南,包含完整C++代码和分步解析,涵盖基础操作和高级应用场景:

一、Boost共享内存核心组件

  • shared_memory_object
    用于创建/打开共享内存对象,需指定名称和访问模式。
#include <boost/interprocess/shared_memory_object.hpp> 
using namespace boost::interprocess;shared_memory_object shm(open_or_create,    // 模式:存在则打开,否则创建 "MySharedMemory",  // 唯一标识名称 read_write         // 访问权限(read_only / read_write)
);
  • mapped_region
    将共享内存映射到进程地址空间,支持读写操作。
#include <boost/interprocess/mapped_region.hpp> 
mapped_region region(shm,               // 共享内存对象 read_write,        // 映射权限 0,                 // 偏移量(默认0)1024               // 映射大小(默认全部)
);

二、基础使用代码示例

  • 写入进程
#include <iostream>
#include <boost/interprocess/shared_memory_object.hpp> 
#include <boost/interprocess/mapped_region.hpp> int main() {// 1. 创建或打开共享内存 shared_memory_object shm(open_or_create, "MySharedMemory", read_write );// 2. 设置内存大小(必须拥有写权限)shm.truncate(1024);   // 分配1024字节 // 3. 映射到当前进程 mapped_region region(shm, read_write);// 4. 写入数据 char* data = static_cast<char*>(region.get_address()); std::strcpy(data, "Hello from Process A!");std::cout << "Data written to shared memory." << std::endl;// 注意:实际应用中需同步机制(如互斥锁)return 0;
}
  • 读取进程
int main() {// 1. 打开已有共享内存 shared_memory_object shm(open_only, "MySharedMemory", read_only);// 2. 映射内存 mapped_region region(shm, read_only);// 3. 读取数据 char* data = static_cast<char*>(region.get_address()); std::cout << "Received: " << data << std::endl;// 4. 清理(通常由最后一个进程执行)shared_memory_object::remove("MySharedMemory");return 0;
}

三、高级应用:共享内存中使用STL容器

  • 使用托管内存和自定义分配器
#include <boost/interprocess/managed_shared_memory.hpp> 
#include <boost/interprocess/containers/vector.hpp> 
#include <boost/interprocess/allocators/allocator.hpp> typedef int ValueType;
typedef allocator<ValueType, managed_shared_memory::segment_manager> ShmemAllocator;
typedef vector<ValueType, ShmemAllocator> SharedVector;int main() {// 创建托管共享内存(自动管理生命周期)managed_shared_memory segment(open_or_create, "ManagedSHM", 65536);// 构造共享vector SharedVector* vec = segment.find_or_construct<SharedVector>("MyVector") (segment.get_allocator<ValueType>()); // 添加数据 vec->push_back(42);vec->push_back(88);// 其他进程可通过相同名称访问该vector return 0;
}

四、同步机制(互斥锁示例)

#include <boost/interprocess/sync/interprocess_mutex.hpp> struct SharedData {interprocess_mutex mutex;int counter = 0;
};// 写入进程 
managed_shared_memory segment(open_or_create, "SyncSHM", 4096);
SharedData* data = segment.find_or_construct<SharedData>("Data")(); {scoped_lock<interprocess_mutex> lock(data->mutex); // 自动加锁 data->counter++;
}// 读取进程同理,通过互斥锁保证原子操作 

五、关键注意事项

  • 生命周期管理
  • 使用shared_memory_object::remove()显式删除共享内存。
  • 托管内存(managed_shared_memory)自动管理对象构造/析构。
  • 避免直接存储指针,使用offset_ptr处理地址偏移。
  • 预分配足够内存避免频繁调整。
  • 减少锁粒度提升并发性能。

通过上述方法,可实现跨进程高效数据交换,适用于高频通信场景如实时数据处理。

完整代码

Github

作者郑天佐
邮箱zhengtianzuo06@163.com
主页http://www.zhengtianzuo.com
githubhttps://github.com/zhengtianzuo

文章转载自:

http://3kXV2iB4.zpLzj.cn
http://xeQiuo7g.zpLzj.cn
http://tuDYc7wH.zpLzj.cn
http://8s22B6JP.zpLzj.cn
http://q9mrtLH0.zpLzj.cn
http://PYF9JBDx.zpLzj.cn
http://OmcFhQvx.zpLzj.cn
http://aHYQ1Ngp.zpLzj.cn
http://r0FtVVe9.zpLzj.cn
http://37LpuLfA.zpLzj.cn
http://AmK1uKdE.zpLzj.cn
http://uVCcVWyg.zpLzj.cn
http://3TGN9NAs.zpLzj.cn
http://6Y6zw6sn.zpLzj.cn
http://kyqfSmvg.zpLzj.cn
http://37lx09C7.zpLzj.cn
http://NMvtPpXU.zpLzj.cn
http://qGwjTF8k.zpLzj.cn
http://HZBHrPKN.zpLzj.cn
http://JEplhmPI.zpLzj.cn
http://keVhbMna.zpLzj.cn
http://uxpHuNbe.zpLzj.cn
http://I719Obp7.zpLzj.cn
http://Etv71AcW.zpLzj.cn
http://G646qG8S.zpLzj.cn
http://qMbi3eKH.zpLzj.cn
http://GY2qRRA8.zpLzj.cn
http://8Y2GojXl.zpLzj.cn
http://DWZKkKqY.zpLzj.cn
http://qWZpOipg.zpLzj.cn
http://www.dtcms.com/wzjs/772993.html

相关文章:

  • 微官网与网站的区别专业网站建设公司怎么做
  • 网站建设seo优化的好处网站维护怎么样
  • 免费的个人简历模板网站建立英文翻译
  • 卖备案域名被抓seo 重庆
  • 朝西村网站建设公司wordpress windows 10
  • 品牌网站制作广州网站建设商城建设
  • 做网站要交百分七十定金深圳罗湖网站建设
  • wordpress导入网站文章高性能网站建设指南 当当
  • 官方网站app网络营销的作用
  • 额尔古纳网站建设个人网站 阿里云
  • 雨人网站建设wordpress 无法更换会员注册页面
  • 佛山专业的做网站软件商城下载
  • 网站可视化设计网站关键词选取的步骤
  • 宜兴城乡建设局网站网站免费的
  • dw可以做移动端网站网站简历模板
  • 网站内容建设的原则是什么代运营电商公司
  • wordpress网站打开很卡传奇发布网站排行
  • 做软件常用的网站有哪些软件嘉定网站设计公司
  • 网站建设规划书有哪些内容湖南省郴州市湘南学院
  • ps怎么做网站首页图软件开发哪里学
  • 免费织梦导航网站模板下载网页设计建立站点步骤
  • 关于网站建设的合同协议做公司的网站的需求有哪些内容
  • 做网站哪家公司专业开发一个网站多少钱啊
  • 广东省做农业网站销售的公司wordpress contactus
  • 用什么做网站好网页制作教程素材
  • 珠海做网站需要多少钱网站建设产品服务
  • 望牛墩镇做网站贵阳汽车网站建设
  • 专业广州网站设计网站开发设计招聘
  • 企业网站怎么搜索优化漯河网站制作公司
  • 杭州网站建设哪家比较好求免费的那种网站有哪些