當前位置:編程學習大全網 - 網站源碼 - 請教linux下如何實現原子自增操作

請教linux下如何實現原子自增操作

Linux的源碼中x86體系結構原子操作的定義文件為。

linux2.6/include/asm-i386/atomic.h

文件內定義了原子類型atomic_t,其僅有壹個字段counter,用於保存32位的數據。

typedef struct { volatile int counter; } atomic_t;

其中原子操作函數atomic_inc完成自加原子操作。

/**

* atomic_inc - increment atomic variable

* @v: pointer of type atomic_t

*

* Atomically increments @v by 1.

*/

static __inline__ void atomic_inc(atomic_t *v)

{

__asm__ __volatile__(

LOCK "incl %0"

:"=m" (v->counter)

:"m" (v->counter));

}

其中LOCK宏的定義為。

#ifdef CONFIG_SMP

#define LOCK "lock ; "

#else

#define LOCK ""

#endif

可見,在對稱多處理器架構的情況下,LOCK被解釋為指令前綴lock。而對於單處理器架構,LOCK不包含任何內容。

  • 上一篇:易語言的進程ID
  • 下一篇:洛克時空的介紹
  • copyright 2024編程學習大全網