Tenir compte de ce code:Comportement étrange avec G ++ CAS
#include <iostream>
using namespace std;
int main()
{
bool lock = false;
lock = __sync_val_compare_and_swap(&lock, false, true);
cout << lock << endl;
}
Je pense que le résultat soit affiché comme 1, mais l'o/p est 0. Juste appeler __sync_val_compare_and_swap(&lock, false, true);
(donc la valeur de retour ne soit pas capturé) puis l'affichage du verrouillage entraîne l'affichage de 1.
Qu'est-ce qui me manque ici?