Sembra che Helgrind tratti gli atomici allo stesso modo delle normali operazioni di lettura / scrittura. Quindi, l'uso di atomici comporterà molti falsi positivi.
Non so esattamente come ThreadSanitizer si occupa di atomica, ma ho trovato un metodo chiamato tsan_atomic32_load. Suppongo che sia in grado di distinguere tra l'atomica e le normali operazioni di lettura / scrittura.
In pratica, tuttavia, il modo migliore sembra essere quello di evitare l'atomica per poter usare gli strumenti per rilevare le condizioni di gara. Altrimenti, finisci con molti falsi positivi.
Esistono strumenti specializzati per verificare strutture di dati concorrenti, ad es. Spin . Anche se sembra potente, sembra essere fuori portata per le normali applicazioni.
In che modo i grandi progetti affrontano il problema dei falsi positivi? Disincentivano l'uso dell'atomica, usano i file di soppressione o semplicemente non si preoccupano dei rilevatori di razza?