【问题标题】:interlocked operation on unanligned data对未对齐数据的联锁操作
【发布时间】:2010-10-30 12:05:08
【问题描述】:

win32 互锁函数提供了一种对数据进行原子操作的机制。它们应该是线程安全和多处理器安全的。

如果数据没有对齐会发生什么?联锁操作仍然是原子的? 例如:增加一个未对齐的整数。

【问题讨论】:

    标签: thread-safety alignment atomic interlocked multiprocessor


    【解决方案1】:

    如果您阅读了大部分 Interlocked API 函数,就会发现一些注释说明了以下内容:

    “Addend 参数指向的变量必须在 32 位边界上对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上的行为将无法预测。请参阅 _aligned_malloc。”

    例如,请参阅MSDN doc

    这基本上是说您需要使用 _aligned_malloc 对齐数据以获得正确的结果。

    【讨论】:

      猜你喜欢
      • 2018-10-12
      • 2015-11-11
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多