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

use*_*515 2 c++ multithreading

方案如下:

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

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

这个可以吗?

谢谢

Joh*_*zen 6

只要你从未写过那门课,你应该是安全的.

但是,只要您需要进行阅读或写作,就需要使用互斥锁来保护读写.

您可能想要研究"可共享锁"的想法:

Boost具有允许快速读取的锁定,但还包括在必要时将锁升级为"编写器"的选项.我认为这可能对未来打样很有价值.

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