c# - 在多线程应用程序中使用单例的危险是什么

标签 c# .net multithreading singleton

我正在考虑在多线程 Win 服务中使用单例进行日志记录,想知道我可能会遇到哪些问题。我已经设置了 get 实例来处理同步

    private static volatile Logging _instance;
    private static object _syncRoot = new object();

    private Logging(){}
    public static Logging Instance
    {
        get
        {
            if (_instance==null)
            {
                lock(_syncRoot)
                {
                    if (_instance == null)
                    {
                        _instance = new Logging();
                    }
                }
            }
            return _instance;
        }
    }

还有什么我可能需要担心的吗?

最佳答案

我觉得还不错。

参见 Implementing the Singleton Pattern in C#了解更多信息。

编辑:虽然应该将返回放在锁内。

关于c# - 在多线程应用程序中使用单例的危险是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726654/

相关文章:

c# - 如何避免 Entity Framework 对空/空数据库的连接

java - synchronized 是否保证线程将看到另一个线程修改的非 volatile 变量的最新值?

Java 同步块(synchronized block)未按预期工作

C#执行cmd命令不起作用

c# - ASP.NET C# 中最常用的扩展和辅助函数

iphone - 为什么当我执行 PerformSelectorInBackground :? 时没有自动释放池

c# - 从字符串列表中选择随机字符串的更好方法

c# - jQuery UI 日期选择器无法与 asp.net mvc 一起正常工作

c# - 在哪里安全地存储来自 Windows 服务的数据?

c# - Apps 脚本 API 响应没有 "result" key