关于x86平台上内存对齐的重要性,第二部分

关于x86平台上内存对齐的重要性,第二部分

作者:BlogUpdater |  时间:2021-09-24 |  浏览:58 |  评论已关闭 条评论

各种 Interlocked 函数(InterlockedIncrement 等)要求被更新的变量正确对齐,即使在 x86 平台上,CPU 以静默方式修复未对齐的内存访问。

如果将未对齐的指针传递给 Interlocked 函数之一,操作仍然会成功,但结果将不是原子的。 另一个处理器可能会看到部分完成的更新。

这是一个特别隐蔽的错误,因为它只发生在非常严格的时序条件下的多处理器机器上。 您将很难在实验室中重现这一点。

(昨天一个评论者抢了我的风头并评论了它。)

故事寓意:和昨天一样。 注意你的对齐方式。

评论已关闭。