2

InterlockedExchange和 和有什么不一样InterlockedExchangePointer

if( 0 != InterlockedCompareExchange( ( void** ) &_myVariable
                                   , temp
                                   , 0
                                   ) )

if( 0 != InterlockedCompareExchangePointer( ( void** ) &_myVariable
                                          , temp
                                          , 0
                                          ) )

相等的?

我必须将代码移植到不知道这些Interlocked[...]Pointer功能的 VC6 上。

编辑:

根据我自己的经验,我知道 VC6漏洞百出,不会有人再使用它了。

但是,我不是决策者,对原始问题的回答将不胜感激。

4

1 回答 1

5

InterlockedCompareExchange采用 32 位变量。

InterlockedCompareExchangePointer采用指针大小变量,该变量因目标体系结构而异。

如果您以 32 位和仅 32 位架构为目标,它会很好,但是每当您将目标架构更改为 64 位时,以下内容将编译并表现得很糟糕:

InterlockedCompareExchange( ( LONG volatile * ) _myPointer , 1, 0 ) );
于 2012-12-12T12:32:02.780 回答