jav*_*red 5 c++ multithreading c++11
我正在寻找具有“阻塞”弹出功能的单生产者单消费者队列。除了一种方法外,提升spsc_queue几乎没问题:
bool pop(T & ret);
Pops one object from ringbuffer.
Run Code Online (Sandbox Code Playgroud)
这个方法是“非阻塞的”,如果没有数据就立即返回。我希望这个方法“阻塞”并等待一些数据到达。
我应该使用哪些集合?
upd至少有人可以建议任何带有阻塞流行音乐的 C++ 队列吗?
并发队列很少提供弹出阻塞接口:在许多情况下,用户需要执行阻塞逻辑,以避免队列实现不必要的开销。
也就是说,您可以在您的周围添加一个包装器queue::pop来执行以下操作:
bool blocking_pop(T & t) {
while(!queue.empty())
wait();
return queue.pop(t);
}
Run Code Online (Sandbox Code Playgroud)
英特尔 TBB有tbb::concurrent_bounded_queue,这可能也适合您的需求。