用于网络协议设计的异步单线程与同步多线程?

时间:2013-02-07 11:56:48

标签: c++ multithreading boost asynchronous network-programming

我们的团队正在实施一种安全的多层对等协议,该协议使用Boost / C ++在多个中间“跳”之间建立节点之间的连接。

我们目前陷入了关于如何实现协议设计的争论,即作为异步单线程或同步多线程架构。

我不想通过列举利弊来偏袒这个问题,但我对StackOverFlow社区在这些问题上的经验以及他们喜欢哪种方法非常感兴趣?

我意识到这是一个悬而未决的问题,所以理想情况下答案不是基于轶事证据,而是来自某些经验或分析基础。

1 个答案:

答案 0 :(得分:5)

我建议异步有两个原因:

  • 你不需要处理线程交互,它总是一个错误的雷区;
  • 您可以使用Boost.Asio库来处理所有低级别调度,连接管理等。如果出于性能原因,还可以轻松使用多个线程。

同步可能更直接如果连接是独立的,那么没有线程必须共享可变状态。如果你不能保证,并确保将来不会改变,那么我会选择异步。