连接是静态的,在多线程的时候,用到事务的情况下,需不需要加锁

habao 2005-04-10 01:33:07
有个问题想问一下大家:
static SqlConnection myConn;
...
SqlTransation myTran = myConn.BeginTransaction;
...
连接是静态的,那么在多线程的时候,用到事务(当然是有可能需要回滚的)的情况下,需不需要加锁什么的?
...全文
142 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2005-04-10
  • 打赏
  • 举报
回复
To:mmqingfeng(漠漠青峰)
问题是搂住说连接是静态的,俺的理解就是是各个线程共享的。
其实搂住也真无聊,让每个线程至少拥有一个数据库连接不就啥也结了?
当然,如果线程太多,那就考虑连接池。
所以,这里实际上连接的共享问题,细想,即使不启动事务,最好也还是不要在线程之间共享连接连接,要么就加锁。
S.F. 2005-04-10
  • 打赏
  • 举报
回复
需要;因为是对同一公共引用操作;除非你搞为非静态的并且是局部的。
mmqingfeng 2005-04-10
  • 打赏
  • 举报
回复
个人认为不需要。

举个例子,WebApplication都是由一个WebServer控制的,对于每一个用户都创建一个新的进程,
而每个用户进程都会进行各种操作,当然也有事务处理,
而在开发的时候,并不需要你对这些事务处理进行特别的lock。

对于多线程安全,我认为主要是针对非readonly的static类型数据,
这种数据在多线程的时候可能会出现一个线程在读,另一个线程在写,
从而出现问题。


如有不对的地方,大家继续批~~
lovvver 2005-04-10
  • 打赏
  • 举报
回复
同意楼上们的观点。
jackymi 2005-04-10
  • 打赏
  • 举报
回复
多线程肯定要lock
晨星 2005-04-10
  • 打赏
  • 举报
回复
当然需要,不信你试试,当两个线程同时要启动事务的时候,必然出严重问题。
habao 2005-04-10
  • 打赏
  • 举报
回复
up

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧