3

clang++ 是否对局部静态变量进行线程安全初始化?

GCC 确实如此,除非您使用误导性命名的-fno-threadsafe-statics. 我正在使用 Apple clang 2.0 版(tags/Apple/clang-139)(基于 LLVM 2.9svn)。

4

2 回答 2

4

是的,与 GCC 相同(因此也可以使用 关闭-fno-threadsafe-statics

于 2011-09-14T20:35:27.947 回答
2

是的,尽管 Apple 的 libcppabi 以次优的方式实现了这一点:使用全局互斥锁,如果许多线程使用许多本地静态变量,则会损害性能。

源代码: http ://www.opensource.apple.com/source/libcppabi/libcppabi-26/src/cxa_guard.cxx

错误报告: https : //bugreports.qt.io/browse/QTBUG-33967(这导致 Qt 在使用 libcppabi 时以不同方式实现此功能)。

我希望让更多的人意识到这一点,这将导致苹果有一天会修复他们的代码......

于 2019-07-16T09:10:45.200 回答