汇编实现(可内嵌在C++里使用)
#ifdef WIN32
void __inline atomic_inc(int* v)
{
__asm
{
mov ebx, v
lock inc dword ptr [ebx]
}
}
#else
static __inline__ void atomic_inc(int *v)
{
__asm__ __volatile__(
"lock incl %0"
:"+m" (*v));
}
#endif
C++实现(WIN平台)
LONG
WINAPI
InterlockedIncrement (
__inout LONG volatile *lpAddend
);
ACE实现(跨平台)
ACE_Atomic_Op<ACE_Thread_Mutex,int> index_;//定义
index++;//增一
index.value();//取值