【发布时间】:2012-04-03 13:38:26
【问题描述】:
所以我读了很多关于为什么这个实现不是线程安全的。但我没有找到如何让它线程安全快速的答案?使其线程安全的变体是添加互斥锁(或者在某些情况下,关键部分就足够了),但这会使该方法变得更慢。那么是否有一种变体可以使该代码线程安全且快速,或者至少现在与在那里添加互斥锁一样慢?
static Singleton& getInstance()
{
static Singleton singleton;
return singleton;
}
PS:是的,当我们使用 Singleton 指针作为类的成员时,我还阅读了很多关于线程安全的 Singletom 实现的内容,问题是关于 Singleton 的这种特殊实现,没有指针和 new 并使用惰性求值。
【问题讨论】:
-
这里有一个提示:您遇到的实施问题可能表明您尝试做的事情是错误的。
-
为什么不使用全局变量而不是单例?
-
@DeadMG 我认为我所问的很可能是不可能的,但我不确定,所以我在问 =)
-
快速、线程安全、惰性 - 选择任意两个。
-
让你的东西类线程安全。只需在您的启动代码中构造一个 thingy 实例。只做一次。不要再做任何事情了。即时单例。
标签: c++ multithreading design-patterns thread-safety singleton