比较并交换(compare and swap, CAS),是原子操作的一种.
CAS demo:
template<typename T>
bool compare_exchange_strong(T& excepted, T& desired)
{
if ((this->load()) == excepted) {
this->store(desired);
return true;
} else {
expected = this->load();
return false;
}
}