アトミック操作の実装は、組み込みの__sync_fetch_and_sub
ない__sync_fetch_and_sub
GCC3.4をベースにしたアセンブリ言語で自分で書く必要があります。しかし、私は組み立てについてほとんど知りません。
誰か助けてもらえますか?どんな助けでも大歓迎です!!
これがの実装です__sync_fetch_and_add
inline unsigned int __sync_fetch_and_add(volatile unsigned int* p, unsigned int incr)
{
unsigned int result;
__asm__ _volatile_ ("lock; xadd %0, %1" :
"=r"(result), "=m"(*p):
"0"(incr), "m"(*p) :
"memory");
return result;
}
__sync_fetch_and_add(int *ptr, int a_count)
ptrが指す変数にa_countをアトミックに追加することです。以前にメモリにあった値を返します。
__sync_fetch_and_sub(int *ptr, int a_count)
ptrが指す変数からa_countをアトミックに減算することです。以前にメモリにあった値を返します。