有个问题想问一下大家:
static SqlConnection myConn;
...
SqlTransation myTran = myConn.BeginTransaction;
...
连接是静态的,那么在多线程的时候,用到事务(当然是有可能需要回滚的)的情况下,需不需要加锁什么的?
static SqlConnection myConn;
...
SqlTransation myTran = myConn.BeginTransaction;
...
连接是静态的,那么在多线程的时候,用到事务(当然是有可能需要回滚的)的情况下,需不需要加锁什么的?
而每个用户进程都会进行各种操作,当然也有事务处理,
而在开发的时候,并不需要你对这些事务处理进行特别的lock。对于多线程安全,我认为主要是针对非readonly的static类型数据,
这种数据在多线程的时候可能会出现一个线程在读,另一个线程在写,
从而出现问题。
如有不对的地方,大家继续批~~
问题是搂住说连接是静态的,俺的理解就是是各个线程共享的。
其实搂住也真无聊,让每个线程至少拥有一个数据库连接不就啥也结了?
当然,如果线程太多,那就考虑连接池。
所以,这里实际上连接的共享问题,细想,即使不启动事务,最好也还是不要在线程之间共享连接连接,要么就加锁。