2 Threads A und B teilen sich volatile int i
.gcc: __sync_lock_test_and_set VS. = Operator mit flüchtigen Variablen
Thread A Inkrementen i
wie folgt aus: __sync_fetch_and_add(&i, 1);
Thread B setzt i
auf einen beliebigen Wert V wie folgt aus: i = 15;
.
Meine Frage: für diese Art der Nutzung, B __sync_lock_test_and_set(&i, 15);
anstelle direkter Affektiertheit mit =
Operator verwenden sollte?
Wenn ja, ist __sync_lock_release
zwingend nach dem test_and_set erforderlich?
Env: gcc 4.1.2, CentOS 5.11 32 Bit, kein C++ 11