win32 互锁函数为数据的原子操作提供了一种机制。它们应该是线程安全的和多处理器安全的。
如果数据没有对齐会发生什么?联锁操作仍然是原子的?例如:增加一个未对齐的整数。
泰
win32 互锁函数为数据的原子操作提供了一种机制。它们应该是线程安全的和多处理器安全的。
如果数据没有对齐会发生什么?联锁操作仍然是原子的?例如:增加一个未对齐的整数。
泰
如果您阅读了大多数 Interlocked API 函数,就会发现一些注释指定了以下内容:
“Addend 参数指向的变量必须在 32 位边界上对齐;否则,此函数在多处理器 x86 系统和任何非 x86 系统上的行为将无法预测。请参阅 _aligned_malloc。”
例如,请参阅此MSDN 文档。
这基本上说您需要使用 _aligned_malloc 对齐数据以获得正确的结果。