【问题标题】:Message Queue VS Thread Pool消息队列 VS 线程池
【发布时间】:2011-03-25 21:18:45
【问题描述】:

消息队列和线程池有什么区别?

【问题讨论】:

  • @S.Lott:“Otter”和“Peace”会更像它。水獭和马毕竟都是四足动物……
  • @Jerry Coffin:Queue 和 Pool 都是集合。

标签: multithreading threadpool message-queue


【解决方案1】:

Message Queue 用于(异步)进程间通信,而Thread Pool 用于在一组线程上运行多个任务。我想不出一种合理的方法来比较它们……它们在很多方面都存在根本差异。

【讨论】:

    【解决方案2】:

    真正的问题是两者之间是否有任何相似之处。消息队列是一种数据结构,用于保存从消息发送到接收者检索并对其进行操作的时间。

    线程池是执行某种处理的线程池。线程池通常会附加某种线程安全队列,以允许您将要完成的作业排队。这通常被称为“任务队列”而不是消息队列,尽管它通常包含一些描述需要完成的任务的消息。

    【讨论】:

    • 我想知道消息队列是否强制发送者和接收者必须来自不同的进程或线程。
    • @peterwkc:我见过的每个消息队列都允许线程将消息发回给自己。
    • 至少将消息发回给自己对我来说确实有意义。请举例说明。
    • @peterwkc:一个例子是一个类似测试的窗口,它有一个计时器正在运行,所以当窗口第一次显示时,它有(比如说)60 秒的时间让你填写空白。当它第一次显示时,它会设置一个计时器,每秒一次将消息发回给自己以更新计时器,并在 60 秒后告诉您时间已用完。
    • @Jerry Coffin:很好的例子。谢谢你的例子。
    【解决方案3】:

    message queue常用于分布式系统,thread pool常用于单机。 btw thread pool 在内部使用阻塞队列。如果您使用message queue,您将花费更多时间来维护它。不要过度设计。 当然,message queue 有更复杂的特性,并且擅长解耦。 (ps:你可以看问题:Why are message queues used insted of mulithreading?

    【讨论】:

      猜你喜欢
      • 2020-04-18
      • 2011-03-13
      • 2017-06-10
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      相关资源
      最近更新 更多