Clang ++ выполняет потокобезопасную инициализацию локальных статических переменных? - PullRequest
3 голосов
/ 14 сентября 2011

clang ++ выполняет потоковую безопасную инициализацию локальных статических переменных?

GCC делает, если вы не отключите его с ошибочно названным -fno-threadsafe-statics. Я использую Apple Clang версии 2.0 (теги / Apple / Clang-139) (на основе LLVM 2.9svn).

Ответы [ 2 ]

4 голосов
/ 15 сентября 2011

Да, так же, как с GCC (поэтому также можно отключить с помощью -fno-threadsafe-statics)

1 голос
/ 16 июля 2019

Да, хотя libcppabi от Apple реализует это неоптимальным образом: с глобальным мьютексом, который снижает производительность, если многие потоки используют много локальной статики.

Исходный код: http://www.opensource.apple.com/source/libcppabi/libcppabi-26/src/cxa_guard.cxx

Сообщение об ошибке: https://bugreports.qt.io/browse/QTBUG-33967 (что привело к тому, что Qt реализовал это по-другому, когда используется libcppabi).

Я надеюсь, что если больше людей узнают об этом, Apple однажды исправит их код ...

...