이 파일의 문서화 페이지로 가기
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
지원이 필요하신가요?
질문이 있으신가요? 문제를 겪고 계신가요? 더 많은 정보가 필요하신가요? 저희에게 문의해주시면 도와드리겠습니다!
지원 페이지를 방문해 주세요
작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요