跨平台进程间同步

      跨平台进程间同步是件令人内牛满面的事情:进程间同步少不了使用内核级别的同步机制,所以与操作系统的关系太紧密了。windows的内核对象有个特点:当引用计数为0时自动回收。linux下的同步机制则表现得像文件。如果进程运行一切正常当然OK,但是如果进程crash了呢?windows下很简单,关闭所有进程,然后重启,OK。linux下也很简单,关闭所有进程,删除文件,然后重启,OK。但问题是两者不完全一致……
      在网上搜索了些跨平台进程库。大部分库做到了外观一致,但是行为不一致。boost的interprocess库比较有意思,他费了很多心思,终于做到行为基本一致——方法是在windows平台下使用内存映射文件来持久化同步信息,也就是说在windows下模拟linux。但是问题是我觉得windows的方式更简单啊:比如使用进程mutex来同步两个进程,如果持有mutex进程crash了,另一个进程应该能够自动获得该mutex,第一个进程重启后也可以再次获取该mutex。但事实上为了恢复状态,你必须关闭所有进程,然后干掉那个文件。当然作者这么做很容易理解:linux平台下模仿windows难度太大了哈。
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值