Я не понимаю описания опции force_seq_cst_atomics в документации.
force_seq_cst_atomics Этот флаг превращает все операции atomi c в последовательно согласованные операции. Это полезно, чтобы проверить, вызвана ли гонка неправильным упорядочением памяти.
- https://github.com/google/sanitizers/wiki/ThreadSanitizerFlags
TSan должен понимать блокировку свободная синхронизация и атоми c операции по умолчанию. Тогда почему эта опция полезна?
Что такое последовательно последовательная операция? Не правда ли, что любое параллельное выполнение программы может быть линеаризовано в последовательное выполнение?
Как может быть вызвано состязание чем-либо else , но неправильным упорядочением доступа к памяти? Гонка происходит, если существует пара чтения и записи, у которой нет определенного события, предшествующего взаимосвязи.
Влияет ли установка force_seq_cst_atomics только на отчеты TSan, или это влияет на ход программы?