gpt4 book ai didi

c++ - 从线程访问对象(使用引用或指针)

转载 作者:行者123 更新时间:2023-11-28 03:18:24 25 4
gpt4 key购买 nike

我有一个 C++ 进程初始化一个类,该类在 std::map 中存储一些数据,然后是另一个类——将在一个线程中执行——我将一个第一类的指针(我也尝试了一个引用),因为它需要访问 std::map 的内容(使用 getter)。

发生的事情是,当我从主线程更新数据时,第一个类的 std::map 中的数据永远不会更新。

我的问题是我的问题是因为我正在使用一个线程来复制对象然后没有收到更新?以及如何解决这个问题?

谢谢

最佳答案

不是,std::map是一个普通的容器,与线程无关。您的线程之间很可能存在同步问题,例如一个线程在另一个线程更新 map 之前或同时查看 map 的竞争条件。在这些情况下可能会发生奇怪的事情,因为 std::map 在添加、更改或删除某些内容时可能会在重新平衡树时更改许多内部指针。另一个同时查看 map 的线程可能会“感到困惑”。

从任一线程访问 map 时尝试使用信号量或互斥锁,看看是否能解决您的问题。

关于c++ - 从线程访问对象(使用引用或指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177745/

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