同期プリミティブ

同期プリミティブ組み込み関数を使用して、さまざまな演算を行うことができます。これらの演算を行うことに加えて、各組み込み関数には 2 つの主要なプロパティーがあります。

次の組み込み関数の場合、<type> は 32 ビット整数または 64 ビット整数のいずれかです。

アトミック fetch-and-op 演算

<type> __sync_fetch_and_add(<type> *ptr,<type> val)

<type> __sync_fetch_and_and(<type> *ptr,<type> val)

<type> __sync_fetch_and_nand(<type> *ptr,<type> val)

<type> __sync_fetch_and_or(<type> *ptr,<type> val)

<type> __sync_fetch_and_sub(<type> *ptr,<type> val)

<type> __sync_fetch_and_xor(<type> *ptr,<type> val)

アトミック op-and-fetch 演算

<type> __sync_add_and_fetch(<type> *ptr,<type> val)

<type> __sync_sub_and_fetch(<type> *ptr,<type> val)

<type> __sync_or_and_fetch(<type> *ptr,<type> val)

<type> __sync_and_and_fetch(<type> *ptr,<type> val)

<type> __sync_nand_and_fetch(<type> *ptr,<type> val)

<type> __sync_xor_and_fetch(<type> *ptr,<type> val)

アトミック compare-and-swap 演算

<type> __sync_val_compare_and_swap(<type> *ptr, <type> old_val, <type> new_val)

int __sync_bool_compare_and_swap(<type> *ptr, <type> old_val, <type> new_val)

アトミック synchronize 演算

void __sync_synchronize (void);

アトミック lock-test-and-set 演算

<type> __sync_lock_test_and_set(<type> *ptr,<type> val)

アトミック lock-release 演算

void __sync_lock_release(<type> *ptr)