- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在重构一些基于 DbProviderFactory
的旧代码利用连接池,但我遇到了一个简单的问题: DbProviderFactories.GetFactory()
返回的对象是线程安全?
现在的代码是这样的:
DbProviderFactory factory = DbProviderFactories.GetFactory("Provider String from config");
var connection = factory.CreateConnection();
connection.ConnectionString = "connection string from config";
等等,但这是每个线程完成一次。显然不是我想要的。
我想知道我是否可以在任何地方使用“工厂”对象?我可以在同一个线程的不同线程中创建多个连接吗 DbProviderFactory
目的?我可以创建 DbAdapter
还是来自同一个工厂的类(class)?
虽然很愚蠢,但即使是具体子类的 MSDN 文档也没有说明您是否可以这样做。例如 msdn doc对于 SqlClientFactory
对于 CreateDataAdapter()
方法没有说明它是否是线程安全的。互联网上的一些不同指南只是打开一个 SqlConnection
的实例。它会做线程池,这很好,但如果你这样做:
SqlConnection connection = new SqlConnection("my connection string);
DbDataAdapter adapt = DbProviderFactories.GetFactory(connection).CreateDataAdapter();
那是线程安全的吗? 那些工厂有多少?那是什么 GetFactory
有跨线程返回的方法吗?总是同一个对象?或不?我正在修改的现有代码使用 DbDataAdapter
很重,所以我也不想改变所有这些。
那么获取工厂并从多个线程使用它是线程安全的吗?
最佳答案
MSDN 说:-
Thread Safety:
Any public static (Shared in Visual Basic) members of this type arethread safe. Any instance members are not guaranteed to be threadsafe.
关于.net - .net DbProviderFactory 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526393/
我是一名优秀的程序员,十分优秀!