Wwise SDK
Version
menu_open
link
Wwise SDK 2023.1.3
|
AkAtomic.h
Go to the documentation of this file.
64 static inline int32_t AkAtomicLoad32( AkAtomic32* pSrc ) { int32_t ret; __atomic_load( ( int32_t* )pSrc, &ret, __ATOMIC_SEQ_CST); return ret; }
65 static inline void AkAtomicStore32( AkAtomic32* pDest, int32_t value ) { __atomic_store( ( int32_t* )pDest, &value, __ATOMIC_SEQ_CST); }
66 static inline int32_t AkAtomicInc32( AkAtomic32* pValue ) { return __sync_add_and_fetch( ( int32_t* )pValue, 1 ); }
67 static inline int32_t AkAtomicDec32( AkAtomic32* pValue ) { return __sync_sub_and_fetch( ( int32_t* )pValue, 1 ); }
68 static inline int32_t AkAtomicExchange32( AkAtomic32* pDest, int32_t value ) { return __sync_lock_test_and_set( ( int32_t* )pDest, value ); }
69 static inline int32_t AkAtomicAdd32( AkAtomic32* pDest, int32_t value ) { return __sync_add_and_fetch( ( int32_t* )pDest, value ); }
70 static inline int32_t AkAtomicSub32( AkAtomic32* pDest, int32_t value ) { return __sync_sub_and_fetch( ( int32_t* )pDest, value ); }
71 static inline int32_t AkAtomicAnd32( AkAtomic32* pDest, int32_t value ) { return __sync_and_and_fetch( ( int32_t* )pDest, value ); }
72 static inline int32_t AkAtomicOr32( AkAtomic32* pDest, int32_t value ) { return __sync_or_and_fetch( ( int32_t* )pDest, value ); }
73 static inline int AkAtomicCas32( AkAtomic32* pDest, int32_t proposed, int32_t expected ) { return __sync_bool_compare_and_swap( ( int32_t* )pDest, expected, proposed ); }
76 static inline int64_t AkAtomicLoad64( AkAtomic64* pSrc ) { return __sync_val_compare_and_swap( pSrc, 0, 0 ); }
77 static inline void AkAtomicStore64( AkAtomic64* pDest, int64_t value ) { int64_t tmp; do { tmp = *pDest; } while( __sync_val_compare_and_swap( pDest, tmp, value ) != tmp ); }
79 static inline int64_t AkAtomicLoad64( AkAtomic64* pSrc ) { int64_t ret; __atomic_load( ( int64_t* )pSrc, &ret, __ATOMIC_SEQ_CST); return ret; }
80 static inline void AkAtomicStore64( AkAtomic64* pDest, int64_t value ) { __atomic_store( ( int64_t* )pDest, &value, __ATOMIC_SEQ_CST ); }
83 static inline int64_t AkAtomicInc64( AkAtomic64* pValue ) { return __sync_add_and_fetch( ( int64_t* )pValue, 1 ); }
84 static inline int64_t AkAtomicDec64( AkAtomic64* pValue ) { return __sync_sub_and_fetch( ( int64_t* )pValue, 1 ); }
85 static inline int64_t AkAtomicExchange64( AkAtomic64* pDest, int64_t value ) { return __sync_lock_test_and_set( ( int64_t* )pDest, value ); }
86 static inline int64_t AkAtomicAdd64( AkAtomic64* pDest, int64_t value ) { return __sync_add_and_fetch( ( int64_t* )pDest, value ); }
87 static inline int64_t AkAtomicSub64( AkAtomic64* pDest, int64_t value ) { return __sync_sub_and_fetch( ( int64_t* )pDest, value ); }
88 static inline int64_t AkAtomicAnd64( AkAtomic64* pDest, int64_t value ) { return __sync_and_and_fetch( ( int64_t* )pDest, value ); }
89 static inline int64_t AkAtomicOr64( AkAtomic64* pDest, int64_t value ) { return __sync_or_and_fetch( ( int64_t* )pDest, value ); }
90 static inline int AkAtomicCas64( AkAtomic64* pDest, int64_t proposed, int64_t expected ) { return __sync_bool_compare_and_swap( ( int64_t* )pDest, expected, proposed ); }
92 static inline void* AkAtomicLoadPtr( AkAtomicPtr* pSrc ) { size_t ret; __atomic_load( ( size_t* )pSrc, &ret, __ATOMIC_SEQ_CST); return ( void* )ret; }
93 static inline void AkAtomicStorePtr( AkAtomicPtr* pDest, void* value ) { __atomic_store( ( size_t* )pDest, ( size_t* )&value, __ATOMIC_SEQ_CST); }
94 static inline void* AkAtomicExchangePtr( AkAtomicPtr* pDest, void* value ) { return ( void* )__sync_lock_test_and_set( ( void** )pDest, value ); }
95 static inline int AkAtomicCasPtr( AkAtomicPtr* pDest, void* proposed, void* expected ) { return __sync_bool_compare_and_swap( ( void** )pDest, expected, proposed ); }
__forceinline long AkAtomicAdd32(AkAtomic32 *pDest, long value)
Definition: AkAtomic.h:64
__forceinline int AkAtomicCas64(AkAtomic64 *pDest, long long proposed, long long expected)
Definition: AkAtomic.h:88
__forceinline void * AkAtomicExchangePtr(AkAtomicPtr *pDest, void *value)
Definition: AkAtomic.h:102
__forceinline void AkAtomicStore64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:80
__forceinline long long AkAtomicOr64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:87
__forceinline int AkAtomicCas32(AkAtomic32 *pDest, long proposed, long expected)
Definition: AkAtomic.h:68
__forceinline void AkAtomicStorePtr(AkAtomicPtr *pDest, void *value)
Definition: AkAtomic.h:101
__forceinline long long AkAtomicAnd64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:86
__forceinline void AkAtomicStore32(AkAtomic32 *pDest, long value)
Definition: AkAtomic.h:60
__forceinline long long AkAtomicSub64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:85
__forceinline long long AkAtomicExchange64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:83
__forceinline long long AkAtomicAdd64(AkAtomic64 *pDest, long long value)
Definition: AkAtomic.h:84
__forceinline long AkAtomicAnd32(AkAtomic32 *pDest, long value)
Definition: AkAtomic.h:66
__forceinline long AkAtomicSub32(AkAtomic32 *pDest, long value)
Definition: AkAtomic.h:65
__forceinline long AkAtomicExchange32(AkAtomic32 *pDest, long value)
Definition: AkAtomic.h:63
__forceinline int AkAtomicCasPtr(AkAtomicPtr *pDest, void *proposed, void *expected)
Definition: AkAtomic.h:103
Cette page a-t-elle été utile ?
Besoin d'aide ?
Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !
Visitez notre page d'AideDé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