【发布时间】:2010-10-30 12:05:08
【问题描述】:
win32 互锁函数提供了一种对数据进行原子操作的机制。它们应该是线程安全和多处理器安全的。
如果数据没有对齐会发生什么?联锁操作仍然是原子的? 例如:增加一个未对齐的整数。
泰
【问题讨论】:
标签: thread-safety alignment atomic interlocked multiprocessor
win32 互锁函数提供了一种对数据进行原子操作的机制。它们应该是线程安全和多处理器安全的。
如果数据没有对齐会发生什么?联锁操作仍然是原子的? 例如:增加一个未对齐的整数。
泰
【问题讨论】:
标签: thread-safety alignment atomic interlocked multiprocessor
如果您阅读了大部分 Interlocked API 函数,就会发现一些注释说明了以下内容:
“Addend 参数指向的变量必须在 32 位边界上对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上的行为将无法预测。请参阅 _aligned_malloc。”
例如,请参阅MSDN doc。
这基本上是说您需要使用 _aligned_malloc 对齐数据以获得正确的结果。
【讨论】: