Gar*_*ngs 2 c# sql multithreading thread-safety
我正在使用线程池进行一些繁重的处理以及一些sql.目前我在需要时打开sql连接,运行查询然后关闭它们.这很好用.该应用程序一直运行没有问题.随着这个应用程序正在做更多的工作,它正在使用更多的线程.更多线程意味着更多SQL连接的打开/关闭.在SQL 2005中,这实际上会破坏服务器.我的测试服务器大约每天执行175次事务.其中大约150个正在master数据库中运行,并且是"ValidateSQLLogin".
我要更改应用程序,以便每个线程都有自己的连接,然后在线程周围传递此连接.
所以我的问题是:
如果SQL连接对象是在线程中本地创建的,然后通过ref传递给另一个类的静态函数,那么这是不安全的吗?
void ThreadA()
{
SqlConnection a = new SqlConnection(....);
MyStaticClass.DoStuff(ref a);
}
void ThreadB()
{
SqlConnection b = new SqlConnection(....);
MyStaticClass.DoStuff(ref b);
}
static void MyStaticClass.DoStuff(ref SqlConnection sql)
{
// Do stuff with sql
}
Run Code Online (Sandbox Code Playgroud)
我最初的想法是它不安全,因为10个线程可以同时调用相同的静态函数,每个线程都传递自己的连接对象.
以前,静态函数打开了自己的连接,并在完成后关闭它们.
如果它是不安全的,最好的方法来解决这个问题.我需要尝试最小化Sql连接的打开/关闭.
谢谢
加雷思