는 C++ 11 CAS 작업 (예를 들어, atomic_compare_exchange_weak
, atomic_compare_exchange_strong
)과 같이, 즉 두 개의 포인터와 값을 가지고 많은 : 대조적으로C++ 11 CAS 작업이 두 개의 포인터 매개 변수를 사용하는 이유는 무엇입니까?
bool atomic_compare_exchange(T* pointer, T* expected, // pseudodeclaration!
T desired);
, 마이크로 소프트, GCC, 인텔의 CAS 작업
long InterlockedCompareExchange(long* pointer, long desired, // Microsoft
long expected);
int __sync_bool_compare_and_swap (T* pointer, T expected, // gcc and
T desired); // Intel
가 왜 C++ (11 개) CAS 기능은 두 개의 포인터를 가지고 가는가 대신 표시되는 내용의 값이 더 일반적인 하나의 포인터와 두 개의 값으로 모든 하나의 포인터와 두 개의 값을?
는'__sync_bool은 _...'*는 * 부울을 반환합니다. –
@KerrekSB : 인텔 매뉴얼에서 복사 한 서명을 보여주었습니다. gcc가 동일한 서명을 사용한다고 가정했습니다. 이제는 그렇지 않다는 것을 알았습니다. – KnowItAllWannabe