gpt4 book ai didi

c++ - 我是否应该同步双端队列

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:14 25 4
gpt4 key购买 nike

我在 C++ 应用程序中有一个带有指针的 deque。我知道有两个线程 可以访问它。

Thread1 将从后面添加指针,Thread2 将从前面处理和删除指针。

Thread2 会等到deque 达到一定数量,比如10 条,然后开始处理它。它一次只会循环处理 10 个项目。与此同时,Thread1 可能仍会继续向双端队列中添加新项目。

我认为不同步 deque 会很好,因为Thread1Thread2 正在访问不同的部分双端队列。它是 deque 而不是 vector。因此,container 的现有内存不会被重新分配。

我说的对吗?如果没有,为什么(我想知道我错过了什么)?

编辑:

我知道始终同步它不会有什么坏处。但这可能会损害性能或没有必要。如果可能的话,我只是希望它运行得更快、更正确。

最佳答案

双端队列必须跟踪它有多少元素以及这些元素的位置。添加元素会更改存储的数据,删除元素也是如此。在没有同步的情况下从两个线程更改数据是一场数据竞争,并会产生未定义的行为。

简而言之,您必须同步这些操作。

关于c++ - 我是否应该同步双端队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com