【发布时间】:2011-02-23 03:33:59
【问题描述】:
如果我在多个线程中访问单个整数类型(例如 long、int、bool 等),是否需要使用互斥锁等同步机制来锁定它们。我的理解是,作为原子类型,我不需要锁定对单个线程的访问,但我看到很多代码确实使用了锁定。分析此类代码表明使用锁会对性能造成重大影响,所以我宁愿不这样做。因此,如果我正在访问的项目对应于总线宽度整数(例如 32 位处理器上的 4 个字节),我是否需要在跨多个线程使用它时锁定对它的访问?换句话说,如果线程 A 正在写入整数变量 X,而线程 B 正在从同一个变量中读取,那么线程 B 是否有可能最终将前一个值的几个字节与几个字节混合在一起?写入的值?这种架构是否依赖,例如32 位系统上的 4 字节整数可以,但 64 位系统上的 8 字节整数不安全?
编辑:刚刚看到这个related post,这很有帮助。
【问题讨论】:
标签: c++ multithreading atomic