C++ 11 CAS operasyonları (örneğin atomic_compare_exchange_weak
, atomic_compare_exchange_strong
) böyle, yani iki işaretçiler ve bir değer, almak çoğu: Buna karşılıkNeden C++ 11 CAS işlemleri iki işaretçi parametresi alır?
bool atomic_compare_exchange(T* pointer, T* expected, // pseudodeclaration!
T desired);
, Microsoft, gcc ve Intel'den CAS işlemleri
long InterlockedCompareExchange(long* pointer, long desired, // Microsoft
long expected);
int __sync_bool_compare_and_swap (T* pointer, T expected, // gcc and
T desired); // Intel
Neden C++ 11 CAS fonksiyonları iki işaretçiler almak ve bunun yerine görünen bir değeri daha geleneksel bir işaretçi ve iki değeri olması: her bir işaretçi ve iki değeri alır?
'__sync_bool _... '* a * bool döndürür. –
@KerrekSB: Gösterdiğim imza, Intel el kitabından kopyalandım. Gcc'in aynı imzayı kullandığını farz ettim. Şimdi bunun olmadığını görüyorum. – KnowItAllWannabe