目前我需要通信的2个进程在同一机器,未来可能会在2台机器上,
我需要通信的进程间有大量数据传输,如果在2个进程都在一台机器上,用pipe是不是比共享内存慢(看资料说共享内存是进程间最快的通信方式,而msdn上有说A pipe is a section of shared memory that processes use for communication.)?那到底是pipe快还是共享内存快?如果2个进程不在一台机器上,用socket更快还是pipe更快?一台机器上2个进程通信,boost库中的message_queue与windows下的管道性能有无可比性?谢谢各位。

解决方案 »

  1.   

    1. 管道比Socket快,但差别不大。当接收双方同一台机器上,上百兆字节每秒的速度是没问题的。
    2. Socket和Pipe都可以跨主机,但Pipe是windows特有的东西,Socket更通用。
    3. 共享内存最快,但共享内存不能跨主机。共享内存只是一块多个进程都可以访问到的内存,不适合具有同步性质的数据交互。
    4. Chrome浏览器的各个进程间通信采用的方法是:windows版本的用管道,Linux版本的用Socket。
    ----供参考。
      

  2.   

    有没有兄弟能爆料“当接收双方同一台机器上,Socket或pipe最高能跑到每秒多少字节?”大概数值有没有过1GBytes/s的可能?
    有没有兄弟能爆料“当接收双方在两台机器上,Socket最高能跑到每秒多少字节?”千兆以太网卡的情况通常会有什么样的性能,协议开销如何?不用太精确,大致情况就行。