C#多线程死锁的问题 程序中 线程定义是这样的:开一个数据库连接,然后开启事务,事务的隔离级别设定为IsolationLevel.ReadCommitted,操作一张表,即向表中插入一条数据然后线程池的大小定义为4,也就是同时能有4个线程一起跑这样的定义下,会不会产生资源争夺 以及死锁的可能呢…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 偶 忘了说了……线程的定义里面当然还有 当操作结束后关闭事务以及关闭连接的操作……我听说 如果是对数据库插入的话 不会产生死锁的 所以这样写……但是运行下来 有很小的可能性会产生CLR20r3的错,难道是死锁了?……(仅出现过一次) ReadCommitted是许多数据库的缺省级别,这个隔离级别上,不会出现读取未提交的数据问题,但仍然无法避免不可重复读(包括幻影读)的问题。当你的系统对并发控制的要求非常严格时,这种默认的隔离级别可能无法提供数据有效的保护,但对于决大多数应用来讲,这种隔离级别就够用了。也就是说很可能会出现死锁。http://www.cnblogs.com/zhenyulu/articles/330494.html 我也是这么觉得……但是log里面写timeout了,而且event log里面说是CLR20r3出错……我能够想到最大的可能性就是死锁了……难道是数据库坏掉了?啊哈哈……不会吧=。= 个人理解: 产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 你说的这个情况,可能大部分情况下可能不会死锁,但如果下面情况就可能. 线程1处理 A , B 线程2处理 B, A 线程1在处理z执行完表A等待对表B进行操作,线程1锁定了表A,等待B的权限;而同一时刻线程2执行了表B的操作锁定了表B,等待表A的访问权限,这样就互相等待,死锁。 C#:用A窗口新建B窗口,关掉A窗口,B窗口也关闭???? 求登录按钮的代码 如何给tree的每个 node 添加onclick事件 winform的一个关于datagrid问题 如何传值 修改listBOX选中项的值? 求助:windows程序连接服务器 简单正则表达问题,请帮忙。 斑竹,结不了贴了 请问如何在特定窗口里模拟键盘输入? 求教:类库、组件和控件的区别与作途 vs2005 编译问题 treeView控件连接到数据库
但是运行下来 有很小的可能性会产生CLR20r3的错,难道是死锁了?……(仅出现过一次)
ReadCommitted是许多数据库的缺省级别,这个隔离级别上,不会出现读取未提交的数据问题,但仍然无法避免不可重复读(包括幻影读)的问题。当你的系统对并发控制的要求非常严格时,这种默认的隔离级别可能无法提供数据有效的保护,但对于决大多数应用来讲,这种隔离级别就够用了。也就是说很可能会出现死锁。http://www.cnblogs.com/zhenyulu/articles/330494.html
但是log里面写timeout了,而且event log里面说是CLR20r3出错……我能够想到最大的可能性就是死锁了……
难道是数据库坏掉了?啊哈哈……不会吧=。=
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
你说的这个情况,可能大部分情况下可能不会死锁,但如果下面情况就可能.
线程1处理 A , B
线程2处理 B, A
线程1在处理z执行完表A等待对表B进行操作,线程1锁定了表A,等待B的权限;而同一时刻线程2执行了表B的操作锁定了表B,等待表A的访问权限,这样就互相等待,死锁。