gpt4 book ai didi

design-patterns - 为什么这个单例构造代码不是线程安全的?

转载 作者:行者123 更新时间:2023-12-04 16:15:28 24 4
gpt4 key购买 nike

在这段代码中,为什么写了“不是线程安全的”?
谢谢

class Singleton
{
private static Singleton _instance;

// Constructor is 'protected'
protected Singleton()
{
}

public static Singleton Instance()
{
// Uses lazy initialization.
// **Note: this is not thread safe.**
if (_instance == null)
{
_instance = new Singleton();
}

return _instance;
}
}

最佳答案

如果两个线程运行 if (_instance == null)在没有创建单例实例的同​​时检查,它们都将尝试调用 new创建单例实例并将对它们的引用存储到同一个变量中。

由于他们将尝试存储的引用将在线程之间共享,因此该操作将不是线程安全的。此外,创建单调类的两个实例可能会破坏程序。

关于design-patterns - 为什么这个单例构造代码不是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com