【发布时间】:2016-01-28 14:45:56
【问题描述】:
有两个线程 A(生产者)和 B(消费者)。
A产生的数据只能以chunks的形式被读取,因此B只能被A读取一次 已经产生了一整块。 单个数据是一个简单的结构,块长度是可变的。比如有一次可能是B在产生50条数据后才允许读取,另一次可能是200条。
我找到了我想使用的生产者/消费者队列的实现: https://github.com/cameron314/readerwriterqueue
我目前的想法是 A 将其数据写入 std::vector,然后将 std::vector 传递到队列中。但我怀疑这是否可行,因为队列不知道 std::vector 将占用多少内存,并且它想预先分配内存。
我希望有人知道一个更简单的解决方案。
【问题讨论】:
-
块的并发队列。
-
您是否尝试过您的解决方案,如果是,在队列中存储
std::vector出了什么问题? -
您的块是可变大小的消息。如果您选择的队列不允许可变大小的消息,则需要另一个队列。
-
' A 将其数据写入 std::vector,然后将 std::vector 传递到队列中' - 试试看:)
-
好的,谢谢大家,我只是认为这可能行不通 - 因为我已经根据项目的大小链接分配内存的队列。
标签: c++ multithreading c++11 thread-safety producer-consumer