同期プリミティブ組み込み関数を使用して、さまざまな演算を行うことができます。これらの演算を行うことに加えて、各組み込み関数には 2 つの主要なプロパティーがあります。
実行された関数はアトミックになることが保証されます
各組み込み関数には、コンパイラーまたはプロセッサーのいずれかの組み込み関数演算で、可視データへのメモリー参照の移動を制限する特定のメモリー・バリア・プロパティーがあります
次の組み込み関数の場合、<type> は 32 ビット整数または 64 ビット整数のいずれかです。
<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)
<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)
<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)
void __sync_synchronize (void);
<type> __sync_lock_test_and_set(<type> *ptr,<type> val)
void __sync_lock_release(<type> *ptr)