首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Meyer的单例模式线程实现安全吗?

Meyer的单例模式线程实现安全吗?
EN

Stack Overflow用户
提问于 2009-11-02 22:09:28
回答 2查看 58.2K关注 0票数 167

使用惰性初始化的Singleton (Meyer‘Singleton)线程的以下实现是否安全?

static Singleton& instance()
{
     static Singleton s;
     return s;
}

如果不是,为什么以及如何使其线程安全?

EN

回答 2

Stack Overflow用户

发布于 2009-11-03 03:38:38

看看下一个标准(第6.7.4节),它解释了静态本地初始化是如何实现线程安全的。因此,一旦这部分标准被广泛实现,Meyer的Singleton将是首选的实现。

我已经不同意很多答案了。大多数编译器已经通过这种方式实现了静态初始化。一个值得注意的例外是Microsoft Visual Studio。

票数 10
EN

Stack Overflow用户

发布于 2009-11-03 00:37:02

正如MSalters所说:这取决于您使用的C++实现。请查看文档。至于另一个问题:“如果不是,为什么?”-- C++标准还没有提到任何关于线程的内容。但即将发布的C++版本支持线程,并且明确声明静态局部变量的初始化是线程安全的。如果两个线程调用这样的函数,其中一个线程将执行初始化,而另一个线程将阻塞并等待其完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1661529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档