You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Инициализация std::atomic<> с помощью {0} не потокобезопасна в C++11 и новее. Если инициализация и первое использование окажутся в разных потоках, то значение может быть перезаписано и будет ошибка.
Для Visual Studio помогает удаление {0}, но это тоже не совсем согласуется со стандартом (код с удаленным {0} проходит все тесты на GCC-7,8,9,10, Clang 10,11,12 и в соответствующих AppleClang).
В C++20 есть std::atomic_ref, но он поддерживается очень не всеми компиляторами.
The text was updated successfully, but these errors were encountered:
Я видел. Но как-бы это патч не для GCC или Clang, а для EDG фронтенда, где много проблем с компиляцией С++. А патч этот не используется, потому что в Альте до сих пор TBB-2020.3 и до oneTBB не обновлялись. Если вам нужен этот патч для Эльбрусов, то можете проверить эту идею сами.
Добрый день!
Первоначально я написал это в комментарии к коммиту, но чтобы там не затерялось, выношу в issue.
Проблема
e2k-ports/onetbb-2021.2-e2k.patch
Lines 52 to 58 in 6fcb942
может быть связана связана с инициализацией переменной
mallocInitialized
:https://github.com/oneapi-src/oneTBB/blob/0815661e4c08e4fcaf772d31c1313c63d629a32e/src/tbbmalloc/frontend.cpp#L1944
Багрепорт: uxlfoundation/oneTBB#558
Инициализация
std::atomic<>
с помощью{0}
не потокобезопасна в C++11 и новее. Если инициализация и первое использование окажутся в разных потоках, то значение может быть перезаписано и будет ошибка.Для Visual Studio помогает удаление
{0}
, но это тоже не совсем согласуется со стандартом (код с удаленным{0}
проходит все тесты на GCC-7,8,9,10, Clang 10,11,12 и в соответствующих AppleClang).В C++20 есть
std::atomic_ref
, но он поддерживается очень не всеми компиляторами.The text was updated successfully, but these errors were encountered: