我实现了一个Meyers Singleton,然后意识到它可能容易受到破坏性失败问题的影响。
因此,我将代码更改为:
Instance *getInstance()
{
static Instance* singleton = new Instance();
return singleton;
}在实现这个程序之后,并且没有出现明显的错误,一个同事实现了一个不同的单例,转而使用了std::call_once。
现在我已经意识到,经过大量的搜索,我无法找到"Leaky“是否是一个线程安全模式。是否应该将泄漏的单例更改为std::call_once?还是因为-是安全的关系?
指针是否被认为是“块范围”变量?如果是这样的话,我认为它将是线程安全的,但如果不是的话,在当前的漏单例方法中引入了大量的bug。
发布于 2022-01-10 03:13:34
是的,这是线程安全的:没有两个线程将尝试在同一时间使用静态存储时间初始化相同的变量。这包括计算初始化器的全部内容。
https://stackoverflow.com/questions/70643880
复制相似问题