gpt4 book ai didi

c++ - ThreadPool and Producer - 消费者模式设计题

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:06 25 4
gpt4 key购买 nike

我想为消费者使用线程池来实现生产者-消费者模式。我将有 1 个请求生产者和多个处理传入请求的消费者。当使用线程池实现消费者时,我的问题是我是否仍然应该有自己的队列供生产者发出请求,然后将它们传递给 Cosumers ThreadPool,或者我是否应该让生产者直接将它传递给 ThreadPool 队列?

我对最后一个问题的关注是可以将多少任务传递给 ThreadPool 队列以及以什么速率传递?生产者在将其传递给消费者线程之前应该相当快地完成一些“预处理”工作。

当我在生产者 - 消费者线程之间有一个队列时,我是否没有更多的控制权?

这适用于需要高性能且需要处理大量传入客户端请求的服务器应用程序。 (一次数百个)。

感谢任何建议!

最佳答案

生产者和线程池之间的队列需要 1 或 2 个额外的上下文切换:线程池在空队列上等待,然后需要分派(dispatch)给消费者线程。最后,必须将消费者呈现回线程池。调度和处理端可以通过消息类来管理。
当所有消费者线程都在队列中等待时,其中一个监听器将消费并停止监听,直到准备就绪。当所有消费者都忙时,下一条消息将在第一个消费者准备就绪时处理。
因此,前者具有更可预测的行为,但需要额外的上下文切换。

关于c++ - ThreadPool and Producer - 消费者模式设计题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3855010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com