0

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

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

4

1 回答 1

1

如果您阅读了大多数 Interlocked API 函数,就会发现一些注释指定了以下内容:

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

例如,请参阅此MSDN 文档

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

于 2009-06-01T19:58:17.760 回答