Цикл проверяет условие отказа после возможного побочного отказа
Этот дефект происходит, когда следующие атомарные сравнивают и обмениваются функциями, которые могут перестать работать, побочно называются снаружи цикла.
C атомарные функции:
atomic_compare_exchange_weak()
atomic_compare_exchange_weak_explicit()
C++ атомарные функции:
std::atomic<T>::compare_exchange_weak(T* expected, T desired)
std::atomic<T>::compare_exchange_weak_explicit(T* expected, T desired, std::memory_order succ, std::memory_order fail)
std::atomic_compare_exchange_weak(std::atomic<T>* obj, T* expected, T desired)
std::atomic_compare_exchange_weak_explicit(volatile std::atomic<T>* obj, T* expected, T desired, std::memory_order succ, std::memory_order fail)
Функции сравнивают содержание памяти объектных представлений, на которые указывает obj
и expected
. Сравнение может побочно возвратить false, даже если содержание памяти равно. Этот побочный отказ делает функции быстрее на некоторых платформах.
Атомарное сравнивает и обменивается функцией, которая побочно перестала работать, может вызвать неожиданные результаты и неожиданный поток управления.
Перенеситесь атомарный, сравнивают и обмениваются функциями, которые могут побочно перестать работать в цикле. Цикл проверяет условие отказа после возможного побочного отказа.
Группа: параллелизм |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
SPURIOUS_FAILURE_NOT_WRAPPED_IN_LOOP |
Удар: низко |
Find defects (-checkers)
| Function that can spuriously wake up not wrapped in loop
| Returned value of a sensitive function not checked