共享内存空间可以将数据(非POD)发送到另一个共享内存吗?
Can a shared memory space send data (non-POD) to another shared memory?
我正在从事一个用于支持并行支持的开源项目在工作站网络上的计算,喜欢元组空间,分布式共享内存,消息传递等。
,我们假设我们有某种不是的伪IPC通信,涉及多种类型,但是它应该在有限的时间内处理大量查询。我对此的解决方案是使用两个共享内存池或至少两个内存池的共享部分。
我正在考虑#pragma data_seg
或两个内存映射的文件,但这意味着所有过程都必须使用同一文件映射对象的名称或句柄,我不确定是否对我不利。同一类的两个实例可以理解共享内存中的数据,但是如果在过渡到第二个共享内存池期间正在修改实例?
第二个共享内存空间是否会理解第一个信息中的已处理信息,而不会减慢数据的新刚创建的"生态系统"?
我希望我设法正确重写答案。
这个问题还没有完全形成 - POD类型绝对可以 - 但是您提出std :: string,这意味着您正在查看带有指针等的非POD类型。
您必须小心指针。Boost采用了在以下前提下工作的智能指针的方法:相对于共享内存区域的开始,OFFET是安全的,并且可以在过程中共享。但是要将其获取到另一个内存池,您需要正确复制它 - 通过在第二个共享内存中分配一个实例并将实例复制到该实例。
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 使用Boost Interprocess创建托管共享内存需要很长时间
- 多个"常量引用"变量可以共享同一个内存吗?
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 字符串共享内存映射的向量
- CUDA 使用共享内存平铺 3D 卷积实现
- 共享内存:MapViewOfFile 返回错误 5
- 在共享缓冲区内存中创建 ::std::string 对象
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- Directx 12 :在两个进程之间共享图形内存
- 有没有办法列出所有共享内存对象的名称?
- 子进程更新共享 mmap 内存,但父进程没有更改
- C++线程之间的内存共享
- 使用Windows共享内存共享小数据
- 更有效地使用fork()和写时复制内存共享
- 从托管代码到非托管代码跨共享内存共享整数数组
- 通过内存共享c++对象
- 内存共享;继承;基实例和派生实例;c++
- Matlab与c++在MEX中的内存共享
- 跨共享内存共享 std::字符串