我有一个生产者/消费者的情况,只有一个生产者和一个消费者,共享一个公共的 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()。这段代码需要同步吗?
如果读取器和写入器之间不同步,则可能会出现数据损坏。
所以一般来说答案是否定的。
To requote
多个读者是安全的。多个线程可以同时读取
单个容器的内容,并且这将正常工作。
当然,不能有任何作家作用于容器
在阅读期间。
根据环境的不同,可以使用不同的并发容器。例如,MSDN 支持并发队列还有boost提供的库无锁容器以及。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)