共享声明的V消息

时间:2012-10-18 11:19:31

标签: architecture distributed-computing

有两种架构解决方案可以实现并发:

  • 共享状态的多线程。这需要锁定代码等等
  • 消息传递模型。消息被放入队列,然后由单个线程处理。

我的问题是,多线程何时胜过消息传递模型?例如,假设您有一台服务器可以通过将消息请求置于内部提示上来异步处理消息请求。是否有任何瓶颈引入(例如,甚至在TCP / IP)级别,如果您使用多线程服务器模型,则不会引入该级别。

感谢。

1 个答案:

答案 0 :(得分:1)

虽然您的问题的答案可能取决于很多因素,但我认为需要考虑的一个重要方面是如何充分利用机器中的多个CPU。正如您在此处所述,如果您的计算机具有多个CPU,则使用一个处理所有消息的线程的消息队列方法不是最佳方法。处理所有消息的一个线程可能最多一个CPU,而其他线程将不足以使用其他可用的CPU。共享状态方法可能会更好地利用多个CPU。

然而,另一种方法是通过使多个线程(最多比CPU数量低一个或两个)来修改消息队列算法 - 清空队列并同时处理消息。这使您可以很好地控制CPU的使用方式,特别是如果您可以选择将特定线程绑定到特定的CPU。这种高度的控制可能使消息队列的多线程版本优于共享状态。

这个答案相关的假设源于现在许多机器都有多个CPU的事实。如果这不适用于您的情况,那么请详细说明您的边界条件,以及当您说“跑赢”时表现的意思。