Attention : vous avez été redirigé vers la plus récente documentation correspondant à votre version générale ( 2023.1.7.8574 ). Si vous souhaitez accéder à la documentation de votre version précise, veuillez télécharger la documentation hors ligne depuis l'Audiokinetic Launcher et sélectionner l'option de documentation Offline dans l'application de création Wwise.
Go to the documentation of this file.
36 #define AkThreadYield() Sleep(1);
48 #define AK_ATOMIC_FENCE_FULL_BARRIER() __dmb( _ARM_BARRIER_ISH )
49 #elif defined( _M_ARM64 )
50 #define AK_ATOMIC_FENCE_FULL_BARRIER() __dmb( _ARM64_BARRIER_ISH )
52 #define AK_ATOMIC_FENCE_FULL_BARRIER() MemoryBarrier();
55 #if defined( _M_ARM ) || defined( _M_ARM64 )
64 __forceinline
long AkAtomicAdd32(
AkAtomic32* pDest,
long value ) {
return InterlockedExchangeAdd( pDest, value ) + value; }
65 __forceinline
long AkAtomicSub32(
AkAtomic32* pDest,
long value ) {
return InterlockedExchangeAdd( pDest, -value ) - value; }
68 __forceinline
int AkAtomicCas32(
AkAtomic32* pDest,
long proposed,
long expected ) {
return InterlockedCompareExchange( pDest, proposed, expected ) == expected ? 1 : 0; }
71 #if defined( _M_ARM ) || defined( _M_ARM64 )
84 __forceinline
long long AkAtomicAdd64(
AkAtomic64* pDest,
long long value ) {
return InterlockedExchangeAdd64( pDest, value ) + value; }
85 __forceinline
long long AkAtomicSub64(
AkAtomic64* pDest,
long long value ) {
return InterlockedExchangeAdd64( pDest, -value ) - value; }
86 __forceinline
long long AkAtomicAnd64(
AkAtomic64* pDest,
long long value ) {
return InterlockedAnd64(pDest, value) & value; }
87 __forceinline
long long AkAtomicOr64(
AkAtomic64* pDest,
long long value ) {
return InterlockedOr64(pDest, value) | value; }
88 __forceinline
int AkAtomicCas64(
AkAtomic64* pDest,
long long proposed,
long long expected ) {
return InterlockedCompareExchange64( pDest, proposed, expected ) == expected ? 1 : 0; }
90 #if defined( _M_ARM ) || defined( _M_ARM64 )
97 __forceinline
void AkAtomicStorePtr(
AkAtomicPtr* pDest,
void* value ) { InterlockedExchangePointer( (
volatile PVOID* )pDest, value ); }
98 __forceinline
void*
AkAtomicExchangePtr(
AkAtomicPtr* pDest,
void* value ) {
return InterlockedExchangePointer( (
volatile PVOID* )pDest, value ); }
99 __forceinline
int AkAtomicCasPtr(
AkAtomicPtr* pDest,
void* proposed,
void* expected ) {
return InterlockedCompareExchangePointer( (
volatile PVOID* )pDest, proposed, expected ) == expected ? 1 : 0; }
103 __forceinline
int AkAtomicCasPtr(
AkAtomicPtr* pDest,
void* proposed,
void* expected) {
return InterlockedCompareExchangePointer( (
void** )pDest, proposed, expected ) == expected ? 1 : 0; }
106 #if defined(_MSC_VER)
109 #if defined(_M_IX86) || defined(_M_X64)
111 #elif defined( _M_ARM ) || defined( _M_ARM64 )
114 #error Unsupported platform for AkSpinHint
Besoin d'aide ?
Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !
Visitez notre page d'Aide
Décrivez-nous de votre projet. Nous sommes là pour vous aider.
Enregistrez votre projet et nous vous aiderons à démarrer sans aucune obligation !
Partir du bon pied avec Wwise