参考記事:https://blog.csdn.net/yikai2009/article/details/8650221
1.アトミック操作:
アトミック操作が実行中意味は、他のオペレーションコードによって中断されていません.. ビットと2つの整数変数アトミック操作に分割されています。
typedefは構造体{揮発性INTカウンタと、} atomic_t。
操作原子に機能成形2.アトミックとアトミックオペレーション
3.整数アトミック操作:
空atomic_set(atomic_tの*のV、I int型); // iが原子変数vの値を設定します
atomic_t V = ATOMIC_INIT(0)、変数V定義//原子、及びゼロに初期化されます
atomic_read(atomic_t * V); //変数の原子の値が、変数の原子の戻り値を取得します
空atomic_add(INT I、atomic_t * V); //アトミック変数+ I
空atomic_sub(I、atomic_t * V INT); //変数原子を-i
空atomic_inc(atomic_t * V); // 変数原子を+1しまし
ボイドatomic_dec(atomic_tのV *); //アトミック変数-1
そうでない場合は偽を返し、それは0、0が真であるかどうかをテストするために、減算及び減算ので、アトミックインクリメント変数を行います。
int型atomic_inc_and_test(atomic_t * V)。
int型atomic_dec_and_test(atomic_t * V)。
int型atomic_sub_and_test(int型I、atomic_t * V)。
アトミック変数は、加算/減算インクリメント/デクリメント操作、および新しい値を返します。
int型atomic_add_return(int型I、atomic_t * V)。
int型atomic_sub_return(int型I、atomic_t * V)。
int型atomic_inc_return(atomic_t * V)。
int型atomic_sub_return(atomic_t * V)。
4.操作原子:
ボイドSET_BIT(NR、ボイド* ADDR); //場所アドレスaddrがNR 1であります
空clear_bit(NR、ボイド* addrに); //場所のアドレスaddrのNR 0
空change_bit(NR、無効* addrに); // NRビット反転アドレスaddr
int型test_bit(NR、void *型のaddr); //戻りアドレスaddrのビットNR
(ADDR * NR、ボイド)test_and_set_bit int型、n番目のビットに// * ADDRが1に設定され、このビットの元の値に戻ります
int型test_and_clear_bit(NR、ボイド* ADDR); //ビットのn *のADDRは、このビットの元の値を0に設定し、リターンします
int型test_and_change_bit(NR、無効* addrに);