1. CAS原理(自行搜索), 用于并发的原子操作。
2. CAS实现无锁队列,CAS(p->next, nullptr, node)。
3. CAS缺点,ABA问题(脏读)。
GCC的CAS,GCC4.1+版本中支持CAS的原子操作。
1)bool __sync_bool_compare_and_swap (type *ptr, type oldval, type newval, ...)
2)type __sync_val_compare_and_swap (type *ptr, type oldval, type newval, ...)
C++11中的CAS,C++11中的STL中的atomic类的函数可以让你跨平台。
template< class T > bool atomic_compare_exchange_weak( std::atomic* obj,T* expected, T desired );
template< class T > bool atomic_compare_exchange_weak( volatile std::atomic* obj,T* expected, T desired );
Windows的CAS
InterlockedCompareExchange ( __inoutLONGvolatile *Target,
__inLONGExchange,
__inLONGComperand);