InterlockedExchange
和InterlockedExchangePointer
有什么区别?
是
if( 0 != InterlockedCompareExchange( ( void** ) &_myVariable
, temp
, 0
) )
和
if( 0 != InterlockedCompareExchangePointer( ( void** ) &_myVariable
, temp
, 0
) )
当量?
我必须将代码移植到VC6,它不知道Interlocked[...]Pointer
函数。
编辑:
根据我自己的经验,我知道VC6非常多,并且没有人会再使用它了。
但是,我不是决策者,对原始问题的回答将受到高度赞赏。
InterlockedCompareExchange
采用32位变量。
InterlockedCompareExchangePointer
采用指针大小变量,这取决于目标体系结构。
如果您的目标是32位且只有32位架构,那么它会没问题,但是每当您将目标架构更改为64位时,以下内容都会编译并表现得很糟糕:
InterlockedCompareExchange( ( LONG volatile * ) _myPointer , 1, 0 ) );