Go to the documentation of this file.
42 #if defined( __arm__ ) || defined( _ARM )
43 #define AK_ATOMIC_FENCE_FULL_BARRIER() _Memory_barrier();
45 #define AK_ATOMIC_FENCE_FULL_BARRIER() MemoryBarrier();
48 #if defined( __arm__ ) || defined( _ARM )
59 __forceinline
long AkAtomicAdd32(
AkAtomic32* pDest,
long value ) {
return InterlockedExchangeAdd( pDest, value ) + value; }
60 __forceinline
long AkAtomicSub32(
AkAtomic32* pDest,
long value ) {
return InterlockedExchangeAdd( pDest, -value ) - value; }
61 __forceinline
int AkAtomicCas32(
AkAtomic32* pDest,
long proposed,
long expected ) {
return InterlockedCompareExchange( pDest, proposed, expected ) == expected ? 1 : 0; }
64 #if defined( __arm__ ) || defined( _ARM )
73 __forceinline
void AkAtomicStore64(
AkAtomic64* pDest,
long long value ) {
long long tmp;
do { tmp = *pDest; }
while ( InterlockedCompareExchange64( pDest, value, tmp ) != tmp ); }
79 __forceinline
long long AkAtomicAdd64(
AkAtomic64* pDest,
long long value ) {
return InterlockedExchangeAdd64( pDest, value ) + value; }
80 __forceinline
long long AkAtomicSub64(
AkAtomic64* pDest,
long long value ) {
return InterlockedExchangeAdd64( pDest, -value ) - value; }
81 __forceinline
int AkAtomicCas64(
AkAtomic64* pDest,
long long proposed,
long long expected ) {
return InterlockedCompareExchange64( pDest, proposed, expected ) == expected ? 1 : 0; }
83 #if defined( __arm__ ) || defined( _ARM )
92 __forceinline
void*
AkAtomicExchangePtr(
AkAtomicPtr* pDest,
void* value ) {
return InterlockedExchangePointer( (
volatile PVOID* )pDest, value ); }
93 __forceinline
int AkAtomicCasPtr(
AkAtomicPtr* pDest,
void* proposed,
void* expected ) {
return InterlockedCompareExchangePointer( (
volatile PVOID* )pDest, proposed, expected ) == expected ? 1 : 0; }
96 __forceinline
int AkAtomicCasPtr(
AkAtomicPtr* pDest,
void* proposed,
void* expected) {
return InterlockedCompareExchangePointer( (
void** )pDest, proposed, expected ) == expected ? 1 : 0; }
Tell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise