多个用户访问单身人士

时间:2013-05-16 08:44:36

标签: sql multithreading locking singleton

我正在使用带有锁定对象的SQL连接器单例类。我现在的问题是,如果多个用户同时使用这个类,这会产生问题吗?

仅供参考......单身人士代码

public sealed class SqlConnector
{
   private static volatile SqlConnector instance;
   private static object syncRoot = new Object();

   public static SqlConnector Instance
   {
     get
     {
         if (instance == null)
         {
            lock (syncRoot)
            {
               if (instance == null)
               {
                  instance = new SqlConnector();
               }
            }
         }
         return instance;
      }
   }

   public Execute(...)
   {
     //what ever
   }
}

2 个答案:

答案 0 :(得分:1)

将SqlConnector用作Singleton不是一个很好的做法。 连接池将为您处理它。

来自http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx

  

要部署高性能应用程序,必须使用连接   池。当您使用.NET Framework数据提供程序用于SQL Server时,   您不必启用连接池,因为提供程序   尽管您可以修改某些设置,但它会自动管理。对于   有关详细信息,请参阅SQL Server连接池(ADO.NET)。

SQL Server Connection Pooling (ADO.NET)

答案 1 :(得分:0)

类SqlConnector应该是线程安全的