考慮以下代碼:與G ++ CAS奇怪行爲
#include <iostream>
using namespace std;
int main()
{
bool lock = false;
lock = __sync_val_compare_and_swap(&lock, false, true);
cout << lock << endl;
}
我期望要顯示的結果作爲1而O/P是0只需調用__sync_val_compare_and_swap(&lock, false, true);
(因此,返回值未被捕獲),然後顯示鎖定結果1顯示。
我在這裏錯過了什麼?