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