各种版本的++、--原子操作

2013-01-09 13:41:25 · 作者: · 浏览: 315

  汇编实现(可内嵌在C++(www.cppentry.com)里使用)

  [cpp]

  #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++(www.cppentry.com)实现(WIN平台)

  [cpp]

  LONG

  WINAPI

  InterlockedIncrement (

  __inout LONG volatile *lpAddend

  );

  ACE实现(跨平台)

  [cpp]

  ACE_Atomic_Op<ACE_Thread_Mutex,int> index_;//定义

  [cpp] view plaincopyprint

  index++;//增一

  [cpp] view plaincopyprint

  index.value();//取值