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