アトミックC言語

参考記事: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に); 

おすすめ

転載: www.cnblogs.com/jyfyonghu/p/11256608.html