gpt4 book ai didi

c++ - 多线程 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:23 33 4
gpt4 key购买 nike

我正在使用 C++ 开发一个项目,该项目使用自己创建的 map 来存储数据 - 从这个意义上讲, map 更像是“地理” map ,因此是图像。有不同的线程读取和写入它。 map 的数据存储在整数 vector 的标准 vector 中。它的大小不会改变,只是通过getter和setter函数改变某些像素的内容。

我的问题如下:有时一切正常,但更多时候我得到损坏的图像,因为像素值改变符号或变得与它们应该的值完全不同。这可能是对像素的线程读/写访问的问题,如果是这样,我应该使用什么来代替标准 vector ?我曾尝试使用互斥锁来确保只有一个线程读取或写入 vector ,但是这些读/写操作经常发生,如果我在每次操作时都锁定 vector ,应用程序会变得太慢。

最佳答案

您将需要某种锁定。为防止这严重影响您的性能,您应该尝试使锁的范围尽可能小。例如,您可以锁定单个行 vector ,这样不同行上的写入就不会相互干扰。哪种解决方案最适合您取决于您​​的访问模式和平台。

关于c++ - 多线程 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11139422/

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