gpt4 book ai didi

多线程下的c++ map contaiter - iterator->seconds change under read mutex

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

改变指针地址总是原子操作吗?在多线程应用程序下将 pointer = NULL 更改为某个值(地址)是否安全?

更多信息:std::map<int, SomePointer* .我访问 mapfind()带锁 mutex对于 READING .我得到 iterator一些元素然后我想改变iterator->second (换句话说 SomePointer* )

因此,虽然 map 的互斥量 |锁定阅读,map暂时不会改变。只有其他读者才能访问 map .所以,对我来说,如果其他读者能得到旧值就很好了 NULLNEW ADDRESS ...但是,当然,我担心某些线程会访问某些 average state并获得损坏的地址。那么,更改 iterator->second 是否安全?在 read mutex 下?

最佳答案

不,更改任何未明确设为线程安全的值都不是线程安全的。

如果您希望在没有数据竞争或锁定的情况下对指针执行可能并发的写入和读取,请使用 std::atomic .

关于多线程下的c++ map contaiter - iterator->seconds change under read mutex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254359/

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