【发布时间】:2012-10-09 17:13:50
【问题描述】:
我正在将一些 Java 代码移植到 C++,其中一个特定部分使用 BlockingQueue 将消息从多个生产者传递到单个消费者。
如果您不熟悉 Java BlockingQueue 是什么,它只是一个具有硬容量的队列,它向队列中的 put() 和 take() 公开线程安全方法。如果队列已满,put() 阻塞,如果队列为空,则 take() 阻塞。此外,还提供了这些方法的超时敏感版本。
超时与我的用例相关,因此提供这些超时的建议是理想的。如果没有,我可以自己编写一些代码。
我用谷歌搜索并快速浏览了 Boost 库,但没有找到类似的东西。也许我在这里是盲人......但是有人知道一个好的推荐吗?
谢谢!
【问题讨论】:
-
手工制作的类有一个数组(可能是双端队列而不是数组,以便于 pop_front push_back)和互斥锁?
-
硬容量真的有要求吗?
-
就我而言,是的。生产者很可能超过消费者,我需要在生产者端阻塞线程,或者拒绝他们的输入,以免内存不足!
标签: c++ multithreading