Следующий код возможен в 32-битной Visual Studio C ++. Существует ли 64-разрядный эквивалент с использованием встроенных функций, поскольку встроенный ASM не поддерживается в 64-разрядной версии Visual Studio C ++?
FORCEINLINE bool bAtomicCAS8(volatile UINT8 *dest, UINT8 oldval, UINT8 newval)
{
bool result=false;
__asm
{
mov al,oldval
mov edx,dest
mov cl,newval
lock cmpxchg byte ptr [edx],cl
setz result
}
return(result);
}
Следующие встроенные функции компилируются в Visual Studio C ++
_InterlockedCompareExchange16
_InterlockedCompareExchange
_InterlockedCompareExchange64
_InterlockedCompareExchange128
Я ищу что-то вроде
_InterlockedCompareExchange8
Но этого, похоже, не существует.