gpt4 book ai didi

c++ - 从多个线程读取全局数据是否安全?

转载 作者:太空狗 更新时间:2023-10-29 23:42:39 25 4
gpt4 key购买 nike

场景如下:

  1. 创建一个类的实例 (std::map) 和将其作为全局变量。
  2. 生成线程。
  3. 线程读取和使用相同的全局类的实例(调用方法、访问成员等)
  4. 所有产生的线程退出
  5. 全局类实例被销毁

没有使用互斥体,没有生成线程修改全局类实例。

这样可以吗?

谢谢

最佳答案

只要您从不给那个类(class)写信,您就应该是安全的。

但是,一旦需要进行读取或写入,就需要使用互斥锁来保护读取和写入。

你可能想看看“共享锁”的想法:

Boost 有这样一个允许快速读取的锁,但也包括在必要时将锁升级为“写入器”的选项。我认为这对于面向 future 可能很有值(value)。

http://www.boost.org/doc/libs/1_39_0/doc/html/thread/synchronization.html#thread.synchronization.mutex_concepts.shared_lockable

关于c++ - 从多个线程读取全局数据是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006918/

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