我在编译器的优化设置中启用了内部函数,但是,InterlockedExchange生成的代码正在生成对kernel32.dll的调用,而不是生成内联汇编。这尤其成问题,因为该功能在Vista之前的Windows版本中不可用。
MSDN documentation状态“此函数使用编译器内在可能的”实现。是否有可能让编译器使用InterlockedExchange的实际内部代码?
答案 0 :(得分:3)
互锁内在函数需要下划线前缀(或#pragma intrinsic
),因此您要使用_InterlockedExchange
,还需要包含intrin.h
另外,你完全阅读了你的引用,它说:
此函数使用编译器内在实现 可能。有关更多信息,请参阅Winbase.h头文件和 的 _InterlockedExchange 强>