BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C standart kütüphanesi > <stdatomic.h> (C11) > atomic_compare_exchange_strong

atomic_compare_exchange_strong() fonksiyonu

Bildirim

_Bool atomic_compare_exchange_strong(volatile A *obj, C *exp, C des); (C11)

_Bool atomic_compare_exchange_weak(volatile A *obj, C *exp, C des); (C11)

_Bool atomic_compare_exchange_strong_explicit(volatile A *obj, C *exp, C des, memory_order succ, memory_order fail); (C11)

_Bool atomic_compare_exchange_weak_explicit(volatile A *obj, C *exp, C des, memory_order succ, memory_order fail); (C11)

Açıklama

Obj parametresi ile gösterilen bellek içeriğini exp ile gösterilen bellek içeriği ile Atomik olarak karşılaştırır. Eğer bitsel olarak eşitse, önceki bellek içeriğini des parametresi ile gösterilen değerlerle değiştirir (okuma-değiştirme-yazma işlemi ile). Aksi takdirde, obj parametresi ile gösterilen gerçek bellek içeriğini exp parametresi ile gösterilen değişkene yükler.

Okuma-değiştirme-yazma ve yükleme işlemleri için bellek modelleri sırasıyla succ ve fail olarak kendini gösterir.

Fonksiyonların weak sürümlerinin sahte bir şekilde başarısız olmasına izin verilir, yani eşit olsalar bile *obj!=*exp denklemi sağlanmış gibi davranırlar.

Parametreler

obj: Test edilecek ve değiştirilecek atomik değişken işaretçisidir.

exp: Atomik değişkende bulunması beklenen değeri gösteren bir işaretçidir.

des: Eğer beklendiği gibi ise, atomik değişkene yüklenecek değeri gösterir.

succ: Karşılaştırma başarılı olursa, okuma-değiştirme-yazma işlemleri için bellek senkronizasyon sıralamasını gösterir.

fail: Karşılaştırma başarısız olursa, yükleme işlemi için bellek senkronizasyon sıralamasını gösterir.

Dönüş değeri

Eğer obj değeri exp değerine eşit ise TRUE, aksi takdirde FALSE bir değer geri döndürülür.