Переменная может быть изменена между доступами
Этот дефект возникает, когда 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)