4

根据 Microsoft 文档,InterlockedCompareExchange64 在 Windows Vista 之前不能作为 Windows API 调用使用。请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms683562(v=vs.85).aspx

但是,似乎 _InterlockedCompareExchange64 编译器内在函数可能在 Windows XP 上可用,只要您使用的是 Pentium 或更高版本的处理器:http: //msdn.microsoft.com/en-us/library/ttk2z1ws(VS.80)。 .aspx _

这个对吗?有什么问题吗?

4

1 回答 1

3

文档非常一致。API 功能自 Vista 或 Server 2003 起可用,但如果您更喜欢内部(不需要外部 API)MS 编译器将通过特定的 CPU 指令实现该功能(参见备注):

因为 _InterlockedCompareExchange64 使用cmpxchg8b指令,所以它在 Pentium 之前的处理器上不可用,例如 486。

请注意,此指令可能是非常旧的 CPU 的问题。这意味着如果你在 486 处理器上运行你的应用程序,它就会在遇到此代码时立即崩溃。

于 2011-10-03T14:15:56.343 回答