InterlockedExchange与InterlockedExchangePointer

Mar*_*n85 2 c++ atomic visual-c++-6 interlocked

InterlockedExchange和之间有什么区别InterlockedExchangePointer

if( 0 != InterlockedCompareExchange( ( void** ) &_myVariable
                                   , temp
                                   , 0
                                   ) )
Run Code Online (Sandbox Code Playgroud)

if( 0 != InterlockedCompareExchangePointer( ( void** ) &_myVariable
                                          , temp
                                          , 0
                                          ) )
Run Code Online (Sandbox Code Playgroud)

当量?

我必须将代码移植到VC6,后者不知道这些Interlocked[...]Pointer功能.

编辑:

根据我自己的经验,我知道VC6 非常多,并且没有人会再使用它了.

但是,我不是决策者,对原始问题的回答将受到高度赞赏.

Pet*_*ter 5

InterlockedCompareExchange 采用32位变量.

InterlockedCompareExchangePointer 采用指针大小的变量,这取决于目标体系结构.

如果您的目标是32位且只有32位架构,那么它会没问题,但是每当您将目标架构更改为64位时,以下内容都会编译并表现得很糟糕:

InterlockedCompareExchange( ( LONG volatile * ) _myPointer , 1, 0 ) );
Run Code Online (Sandbox Code Playgroud)