Muaji
2015-03-03 06:54
采纳率: 100%
浏览 3.4k

c++进程间通讯(共享内存)时

我的需求:一个进程批量的数据不间断的存入差不多每秒有400k的数据这样子(不一定是一次存入的,可能是分几次),而另一个内存要从共享内存中读取这些数据,读取完就释放那块内存。
如何使共享的内存具有一定的数据结构,如同stl中的vector那样。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • oyljerry 2015-03-03 08:42
    已采纳

    需要自己做序列化,反序列化,把数据转回vector。自己定义格式等,知道多大一块内存数据表示一个vector的元素。然后一个个获取,存入vector

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 91program 2015-03-03 08:06

    如何使共享的内存具有一定的数据结构?共享内存就是一块内存,是否有数据结构,由使用者来决定。你使用什么样的指针指向它,它就具有什么样的结构。
    进程间共享结构,为了保证数据的读写同步,需要使用类似于互斥量之类的东东。

    评论
    解决 无用
    打赏 举报
  • Muaji 2015-03-03 08:42

    能不能给点实例代码,我主要是不会把数据按照一定数据结构(以vector为示例)写入共享内存

    评论
    解决 无用
    打赏 举报
  • xuheazx 2015-03-04 02:28
    说了半天,就是 实现一个 缓冲池吗,缓冲池 里面 每个节点,你定义一个数据结构,比如说 
    struct _Data{
            char * pBuff;             //内存数据
            unsigned int nSize;  // 内存大小
    } 
    
    而缓冲池,说明白了,就是 N个 _Data 数据结构组成的内存的集合。
    _Data * PopData();                     //用来取数据
    void PushData(_Data * pData);  //用来存数据
    
    你自己可以试试写吗,都说的这么直白了。
    
    评论
    解决 无用
    打赏 举报
  • dinkyFan 2015-03-05 07:12

    共享资源关键是要做互斥,STL的容器类并非线程安全的,即无法保证互斥的,所以互斥需要自己处理。最好参考下内存池的实现。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题