Sheppard Y

keep thinking keep coding.

protobuf与shared memory

2016-07-08 日更新 
此篇博客已经迁移到新博客,并做行文检查和优化排版:
http://blog.clawz.me/2013/06/26/13-protobuf-shared-memory/

 


    ​项目里shared memory存放的数据结构,现在需要将其同时用于server与client之间的相应数据交互。server与client之前的协议格式为protobuf。

    ​为了只维护一份代码,准备将之前用于shared memory的结构转化为protobuf,然后两处都用这个protobuf。

    ​搞了一会儿,才想起shared memory里只适合存定长的非指针结构。

    ​汗,这个几年前就经历过,那个时候是学生时代做五子棋世界的时候,貌似是想往shared memory里存放std::map。

    ​当时水平太低,报错了就放弃了stl的容器,写些了中规中矩的结构体。

    ​这次就顺便搜下当年那个问题的解决方法。找到个说的挺好的:http://www.cnblogs.com/fullsail/archive/2013/01/20/2868898.html

    ​大意就是,stl里容器会动态分配内存,而且new的东西在自己的进程空间里,别的进程访问时必然是个不对的指针。需要将stl的分配器定制为从共享内存里分配空间,或者其他几个链接里提到的方法。

    ​回到我现在遇到的protobuf这个问题,protobuf里有些如repeated或者string等会动态new,这个如果做内存分配的定制,还得重改protobuf的代码,复杂度比较高。

    ​加上项目里的这单个协议格式制定的需求只是临时的,就更没必要了。最终放弃protobuf结构直接映射到共享内存的企图。

    ​

posted on 2013-06-26 00:03 Sheppard Y 阅读(2241) 评论(0)  编辑 收藏 引用 所属分类: c++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2013年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

留言簿(1)

随笔分类(77)

随笔档案(58)

me

基友

同行

业界前辈

最新随笔

搜索

积分与排名

最新评论

阅读排行榜