【发布时间】:2014-04-09 16:35:23
【问题描述】:
我有一个生产者/消费者的情况,一个生产者和一个消费者,共享一个共同的 std::deque。
让我写一些代码:
deque<int> dq;
void producer()
{
for (int i = 0; i < N; i++)
dq.push_back(i);
// signal data
}
void consumer()
{
// get signal
int n = dq.front();
dq.pop_front();
}
考虑在独立线程上执行的 consumer() 和 producer()。这段代码需要同步吗?
【问题讨论】:
-
第一个引用的问题是关于仅推送,第二个是关于 std::set,第三个是关于 std::queue。我在询问 std::deque ,只有一个线程在一侧推动,一个线程在相对于第一个线程的另一侧弹出。也许您的搜索需要超过 8 秒的时间。
标签: c++ multithreading stl