सी ++ 11 कैस आपरेशन (जैसे, atomic_compare_exchange_weak
, atomic_compare_exchange_strong
) दो संकेत दिए गए और एक मूल्य, यानी, इस तरह ले से कई:सी ++ 11 सीएएस संचालन दो सूचक पैरामीटर क्यों लेते हैं?
bool atomic_compare_exchange(T* pointer, T* expected, // pseudodeclaration!
T desired);
इसके विपरीत, माइक्रोसॉफ्ट, जीसीसी, और इंटेल से कैस संचालन
long InterlockedCompareExchange(long* pointer, long desired, // Microsoft
long expected);
int __sync_bool_compare_and_swap (T* pointer, T expected, // gcc and
T desired); // Intel
क्यों सी ++ 11 कैस कार्यों दो संकेत लेते हैं और बदले में क्या दिखाई देता है की एक मूल्य के एक और अधिक परंपरागत एक सूचक और दो मानों होने के लिए: सभी एक सूचक और दो मानों ले?
'__sync_bool _...' रिटर्न एक * bool *। –
@ केरेरेकएसबी: हस्ताक्षर मैंने दिखाया कि मैंने इंटेल मैनुअल से कॉपी किया है। मैंने माना कि जीसीसी ने एक ही हस्ताक्षर का इस्तेमाल किया था। अब मैं देखता हूं कि यह नहीं है। – KnowItAllWannabe