32 extern FXAPI FXbool atomicsAvailable();
42 extern FXAPI
void atomicThreadFence();
48 extern FXAPI FXint atomicRead(
volatile FXint* ptr);
51 extern FXAPI
void atomicWrite(
volatile FXint* ptr,FXint v);
54 extern FXAPI FXint atomicSet(
volatile FXint* ptr,FXint v);
57 extern FXAPI FXint atomicAdd(
volatile FXint* ptr,FXint v);
60 extern FXAPI FXint atomicCas(
volatile FXint* ptr,FXint expect,FXint v);
63 extern FXAPI FXbool atomicBoolCas(
volatile FXint* ptr,FXint expect,FXint v);
69 extern FXAPI FXuint atomicRead(
volatile FXuint* ptr);
72 extern FXAPI
void atomicWrite(
volatile FXuint* ptr,FXuint v);
75 extern FXAPI FXuint atomicSet(
volatile FXuint* ptr,FXuint v);
78 extern FXAPI FXuint atomicAdd(
volatile FXuint* ptr,FXuint v);
81 extern FXAPI FXuint atomicCas(
volatile FXuint* ptr,FXuint expect,FXuint v);
84 extern FXAPI FXbool atomicBoolCas(
volatile FXuint* ptr,FXuint expect,FXuint v);
90 extern FXAPI FXlong atomicSet(
volatile FXlong* ptr,FXlong v);
93 extern FXAPI FXlong atomicAdd(
volatile FXlong* ptr,FXlong v);
96 extern FXAPI FXlong atomicCas(
volatile FXlong* ptr,FXlong expect,FXlong v);
99 extern FXAPI FXbool atomicBoolCas(
volatile FXlong* ptr,FXlong expect,FXlong v);
105 extern FXAPI FXulong atomicSet(
volatile FXulong* ptr,FXulong v);
108 extern FXAPI FXulong atomicAdd(
volatile FXulong* ptr,FXulong v);
111 extern FXAPI FXulong atomicCas(
volatile FXulong* ptr,FXulong expect,FXulong v);
114 extern FXAPI FXbool atomicBoolCas(
volatile FXulong* ptr,FXulong expect,FXulong v);
120 extern FXAPI FXptr atomicRead(
volatile FXptr* ptr);
123 extern FXAPI
void atomicWrite(
volatile FXptr* ptr,FXptr v);
126 extern FXAPI FXptr atomicSet(
volatile FXptr* ptr,FXptr v);
129 extern FXAPI FXptr atomicAdd(
volatile FXptr* ptr,FXival v);
132 extern FXAPI FXptr atomicCas(
volatile FXptr* ptr,FXptr expect,FXptr v);
135 extern FXAPI FXbool atomicBoolCas(
volatile FXptr* ptr,FXptr expect,FXptr v);
138 extern FXAPI FXbool atomicBoolDCas(
volatile FXptr* ptr,FXptr cmpa,FXptr cmpb,FXptr a,FXptr b);
144 template <
typename EType>
145 inline EType* atomicSet(EType *
volatile *ptr,EType* v){
146 return (EType*)atomicSet((
volatile FXptr*)ptr,(FXptr)v);
151 template <
typename EType>
152 inline EType* atomicAdd(EType *
volatile *ptr,FXival v){
153 return (EType*)atomicAdd((
volatile FXptr*)ptr,v*((FXival)
sizeof(EType)));
158 template <
typename EType>
159 inline EType* atomicCas(EType *
volatile *ptr,EType* expect,EType* v){
160 return (EType*)atomicCas((
volatile FXptr*)ptr,(FXptr)expect,(FXptr)v);
165 template <
typename EType>
166 inline FXbool atomicBoolCas(EType *
volatile *ptr,EType* expect,EType* v){
167 return atomicBoolCas((
volatile FXptr*)ptr,(FXptr)expect,(FXptr)v);
172 template <
typename EType>
173 inline FXbool atomicBoolDCas(EType *
volatile *ptr,EType* cmpa,EType* cmpb,EType* a,EType* b){
174 return atomicBoolDCas((
volatile FXptr*)ptr,(FXptr)cmpa,(FXptr)cmpb,(FXptr)a,(FXptr)b);
Definition: FX4Splitter.h:28