【发布时间】:2013-08-17 15:06:30
【问题描述】:
我在 C++ 应用程序中有一个带有指针的 deque。我知道有 两个线程 可以访问它。
Thread1 将从后面添加指针,Thread2 将从前面处理和删除指针。
Thread2 会等到deque 达到一定数量,说是10 个项目,然后开始处理它。它一次只会循环和处理 10 个项目。与此同时,Thread1 可能仍会继续向双端队列添加新项目。
我认为不同步deque 会很好,因为Thread1 和Thread2 正在访问deque 的不同部分。它是deque 而不是vector。因此,container 的现有内存不会被重新分配。
我说的对吗?如果不是,为什么(我想知道我错过了什么)?
编辑:
我知道始终同步它不会有什么坏处。但这可能会损害性能或没有必要。如果可能的话,我只是希望它运行得更快、更正确。
【问题讨论】:
-
我猜你应该总是在有疑问时使用同步。
-
是的,你应该同步。
-
听起来你想要一个无锁队列,而不是 std::deque。
-
@bash.d - 如果有疑问,请不要编写代码;解开疑惑。
标签: c++ c multithreading deque