Переменная может быть изменена между доступами
Этот дефект возникает, когда C атомарных типов или C++ std::atomic переменные класса появляются дважды в выражении, и существуют:
Две операции атомарного чтения переменной.
Атомарное чтение и отдельная атомарная операция записи переменной.
Стандарт C задает определенные использования с атомарными переменных, которые являются безопасными для потока и не вызывают условий гонки данных. В отличие от отдельных операций, пара операций над одной и той же атомарной переменной в выражении не безопасна для потока.
Поток может изменять атомарную переменную между парой атомарных операций, что может привести к условию гонки данных.
Не ссылаться на атомарную переменную дважды в том же выражении.
| Группа: Параллелизм |
| Язык: C | C++ |
| По умолчанию: On для рукописного кода, off для сгенерированного кода |
Синтаксис командной строки
: ATOMIC_VAR_ACCESS_TWICE |
| Влияние: Средний |
Atomic load and store sequence not atomic | Data race | Data race including atomic operations | Find defects (-checkers)