我想使用ThreadPool为消费者实现一个生产者-消费者模式。我将有一个请求的生产者和多个消费者来处理传入的请求。当使用线程池实现消费者时,我的问题是,我是否应该仍然有自己的队列供生产者放置请求,然后将它们传递给消费者threadpool,或者我是否应该让生产者直接将其传递到ThreadPool队列?
我对最后一个问题的担忧是,一个人可以向ThreadPool队列传递多少任务,以及以什么速率传递?生产者在将其传递给消费者线程之前,应该相当快地完成一些“预处理”工作。
当我在生产者-消费者线程之间有一个队列时,我不会有更多的控制吗?
这适用于需要高性能且需要处理大量传入客户端请求的服务器应用程序。(一次数以百计)。
任何建议都是非常感谢的!
发布于 2010-10-04 20:18:24
生产者和线程池之间的队列需要1到2个额外的上下文切换:线程池等待一个空队列,然后需要分派到一个消费者线程。最后,使用者必须返回到线程池。消息类可以管理发送和处理末尾。
当所有消费者线程都在一个队列上等待时,其中一个侦听器将消耗并停止侦听,直到就绪。当所有消费者都很忙时,下一条消息将在第一个消费者准备好时处理。
因此,前者具有更可预测的行为,但需要额外的上下文切换。
https://stackoverflow.com/questions/3855010
复制相似问题