叮当声吗++局部静态变量的线程安全初始化?

发布于 2024-12-04 14:52:25 字数 173 浏览 2 评论 0原文

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

GCC 会这样做,除非您使用误导性命名的 -fno-threadsafe-statics 将其关闭。 我正在使用 Apple clang 版本 2.0 (tags/Apple/clang-139)(基于 LLVM 2.9svn)。

Does clang++ do threadsafe initialisation of local static variables?

GCC does, unless you turn it off with the misleadingly named -fno-threadsafe-statics.
I'm using Apple clang version 2.0 (tags/Apple/clang-139) (based on LLVM 2.9svn).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

み青杉依旧 2024-12-11 14:52:25

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

Yes, same as with GCC (so can also be turned off with -fno-threadsafe-statics)

明天过后 2024-12-11 14:52:25

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

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

错误报告:
https://bugreports.qt.io/browse/QTBUG-33967(导致当使用 libcppabi 时,Qt 以不同的方式实现这一点)。

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

Yes, although Apple's libcppabi implements this in a suboptimal way: with a global mutex which harms performance if many threads are using many local statics.

Source code:
http://www.opensource.apple.com/source/libcppabi/libcppabi-26/src/cxa_guard.cxx

Bug report:
https://bugreports.qt.io/browse/QTBUG-33967 (which led Qt to implement this differently when libcppabi is used).

I hope making more people aware of this will result in Apple fixing their code one day...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文