C11 standartları ile birlikte C Programlama Dili'ne eklenen stdatomic.h başlık dosyasında Thread'ler arasında paylaşılan veri üzerinde atomik işlemler gerçekleştirmek için kullanılan fonksiyon, makrolar ve veri türü tanımlamaları yer almaktadır.
Eğer derleyici __STDC_NO_ATOMICS __ (C11) makro sabitini tanımlarsa, stdatomic.h başlık dosyası, _Atomic anahtar sözcüğü ve aşağıda gösterilen değerler kullanım dışı kalır.
Fonksiyonlar
Fonksiyon adı | Açıklama |
---|---|
atomic_compare_exchange_strong (C11) atomic_compare_exchange_strong_explicit (C11) atomic_compare_exchange_weak (C11) atomic_compare_exchange_weak_explicit (C11) |
_Bool atomic_compare_exchange_strong(volatile A *obj, C *exp, C des); Kendisine geçirilen ilk parametredeki atomik nesneyi ikinci parametre ile gösterilen bellek değeri ile karşılaştırır. Eğer bu değerler bit bazında eşitse, ilk parametre değerini üçüncü parametre değeri ile değiştirir. Aksi takdirde, ilk parametre ile gösterilen bellek değerini ikinci parametre gösterilen belleğe yükler. |
atomic_exchange (C11) atomic_exchange_explicit (C11) |
C atomic_exchange(volatile A *obj, C des); Kendisine geçirilen ilk parametredeki atomik nesneyi ikinci parametre ile verilen değer ile değiştirir ve önceki değeri geri döndürür. |
atomic_fetch_add (C11) atomic_fetch_add_explicit (C11) |
C atomic_fetch_add(volatile A *obj, M arg); Kendisine geçirilen ilk parametre değerini ikinci parametre değeri ile topladıktan sonra elde ettiği değeri ilk parametreye atar. İlk parametrenin önceki değerini geri döndürür. |
atomic_fetch_and (C11) atomic_fetch_and_explicit (C11) |
C atomic_fetch_and(volatile A *obj, M arg); Kendisine geçirilen ilk parametre değeri ile ikinci parametre değeri arasındaki AND bit işlem sonucunu ilk parametreye atar. İlk parametrenin önceki değerini geri döndürür. |
atomic_fetch_or (C11) atomic_fetch_or_explicit (C11) |
C atomic_fetch_or(volatile A *obj, M arg); Kendisine geçirilen ilk parametre değeri ile ikinci parametre değeri arasındaki OR bit işlem sonucunu ilk parametreye atar. İlk parametrenin önceki değerini geri döndürür. |
atomic_fetch_sub (C11) atomic_fetch_sub_explicit (C11) |
C atomic_fetch_sub(volatile A *obj, M arg); Kendisine geçirilen ilk parametre değerinden ikinci parametre değerini çıkardıktan sonra elde ettiği değeri ilk parametreye atar. İlk parametrenin önceki değerini geri döndürür. |
atomic_fetch_xor (C11) atomic_fetch_xor_explicit (C11) |
C atomic_fetch_xor(volatile A *obj, M arg); Kendisine geçirilen ilk parametre değeri ile ikinci parametre değeri arasındaki XOR bit işlem sonucunu ilk parametreye atar. İlk parametrenin önceki değerini geri döndürür. |
atomic_flag_clear (C11) atomic_flag_clear_explicit (C11) |
void atomic_flag_clear(volatile atomic_flag *obj); Kendisine geçirilen atomic_flag parametresine yanlış değer verir. |
atomic_flag_test_and_set (C11) atomic_flag_test_and_set_explicit (C11) |
_Bool atomic_flag_test_and_set(volatile atomic_flag *obj); Kendisine geçirilen atomic_flag parametresine doğru değer verir bir önceki değeri geri döndürür. |
atomic_init (C11) |
void atomic_flag_test_and_set(volatile A *obj, C des); Kendisine geçirilen ilk parametredeki atomik nesneye ikinci parametre ile verilen değeri atar. |
atomic_is_lock_free (C11) |
_Bool atomic_is_lock_free(const volatile A *obj); Kendisine geçirilen parametredeki atomik nesnenin kilitli olup olmadığını gösterir. |
atomic_load (C11) atomic_load_explicit (C11) |
C atomic_load(const volatile A *obj); Kendisine geçirilen parametredeki atomik nesnenin değerini geri döndürür. |
atomic_signal_fence (C11) |
void atomic_signal_fence(memory_order memory); Bir thread ve aynı thread üzerinde yürütülen bir sinyal işleyicisi arasında, sırayla belirtildiği gibi, atomik olmayan ve serbest kalmış atomik erişimlerin bellek senkronizasyonu sıralamasını oluşturur. |
atomic_store (C11) atomic_store_explicit (C11) |
void atomic_store(volatile A *obj, C des); Kendisine geçirilen ilk parametredeki atomik nesnenin değerini ikinci parametre ile verilen değer ile değiştirir. |
atomic_thread_fence (C11) |
void atomic_thread_fence(memory_order memory); İlişkili bir atomik işlem olmadan, atomik olmayan ve serbest kalmış atomik erişimlerin bellek senkronizasyonu sıralamasını oluşturur. |
Veriler
Veri türü adı | Açıklama |
---|---|
atomic_flag (C11) | Atomik ikli sistem değeridir. |
memory_order (C11) | Bellek düzeni sabitlerini tanımlar. |
atomic_bool | _Atomic _Bool |
atomic_char | _Atomic char |
atomic_schar | _Atomic signed char |
atomic_uchar | _Atomic unsigned char |
atomic_short | _Atomic short |
atomic_ushort | _Atomic unsigned short |
atomic_int | _Atomic int |
atomic_uint | _Atomic unsigned int |
atomic_long | _Atomic long |
atomic_ulong | _Atomic unsigned long |
atomic_llong | _Atomic long long |
atomic_ullong | _Atomic unsigned long long |
atomic_char16_t | _Atomic char16_t |
atomic_char32_t | _Atomic char32_t |
atomic_wchar_t | _Atomic wchar_t |
atomic_int_least8_t | _Atomic int_least8_t |
atomic_uint_least8_t | _Atomic uint_least8_t |
atomic_int_least16_t | _Atomic int_least16_t |
atomic_uint_least16_t | _Atomic uint_least16_t |
atomic_int_least32_t | _Atomic int_least32_t |
atomic_uint_least32_t | _Atomic uint_least32_t |
atomic_int_least64_t | _Atomic int_least64_t |
atomic_uint_least64_t | _Atomic uint_least64_t |
atomic_int_fast8_t | _Atomic int_fast8_t |
atomic_uint_fast8_t | _Atomic uint_fast8_t |
atomic_int_fast16_t | _Atomic int_fast16_t |
atomic_uint_fast16_t | _Atomic uint_fast16_t |
atomic_int_fast32_t | _Atomic int_fast32_t |
atomic_uint_fast32_t | _Atomic uint_fast32_t |
atomic_int_fast64_t | _Atomic int_fast64_t |
atomic_uint_fast64_t | _Atomic uint_fast64_t |
atomic_intptr_t | _Atomic intptr_t |
atomic_uintptr_t | _Atomic uintptr_t |
atomic_size_t | _Atomic size_t |
atomic_ptrdiff_t | _Atomic ptrdiff_t |
atomic_intmax_t | _Atomic intmax_t |
atomic_uintmax_t | _Atomic uintmax_t |
Makro sabitler
Sabit adı | Standart | Açıklama |
---|---|---|
ATOMIC_BOOL_LOCK_FREE ATOMIC_CHAR_LOCK_FREE ATOMIC_CHAR16_T_LOCK_FREE ATOMIC_CHAR32_T_LOCK_FREE ATOMIC_WCHAR_T_LOCK_FREE ATOMIC_SHORT_LOCK_FREE ATOMIC_INT_LOCK_FREE ATOMIC_LONG_LOCK_FREE ATOMIC_LLONG_LOCK_FREE ATOMIC_POINTER_LOCK_FREE |
C11 | Verilen atomik veri tipinin kilitsiz olduğunu gösterir. |
ATOMIC_FLAG_INIT | C11 | Yeni bir atomic_flag değeri oluşturur. |
ATOMIC_VAR_INIT | C11 | Yeni bir atomik nesne oluşturur. |
kill_dependency | C11 | Memory_order_consume için bağımlılık zincirini kırar. |