社区
C#
帖子详情
关于多线程操作同一对象出现死锁的问题
ziqing
2007-03-15 01:36:23
我要同时运行多个线程,在线程中调用好多类,在这些类中都要对同一对象进行操作。怎么处理能最大限度的避免死锁情况。
...全文
812
28
打赏
收藏
关于多线程操作同一对象出现死锁的问题
我要同时运行多个线程,在线程中调用好多类,在这些类中都要对同一对象进行操作。怎么处理能最大限度的避免死锁情况。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
honkerhero
2007-03-16
打赏
举报
回复
lock不能锁方法,它锁的是属性
用mutex,但他的范围一定要小,在马上要操作的时候再锁,用完马上解开
快乐小Y
2007-03-16
打赏
举报
回复
唉,LZ的心情我明白
用这个
lock(this)
{}
或者用Semaphores试试
foyuan
2007-03-16
打赏
举报
回复
lock(this)
{}
ziqing
2007-03-16
打赏
举报
回复
顶!
haiwangstar
2007-03-16
打赏
举报
回复
首先要搞清楚概念,到底什么是死锁! 死锁指的不是多个线程同时操作某个资源,而造成获取了错误数据的结果,而是因为几个线程因为资源争夺,谁也无法得到必要的资源,结果互相等待,谁也运行不了。
lock,Monitor 等等都是线程同步用的,这些不是用来避免死锁的,而恰恰是因为运用了这些才造成了产生死锁的可能,如果你完全不用这些线程同步的对象,那才是绝对不会产生死锁的。在多线程编程中,使用了lock,monitor等等。。如果没有非常认真的想清楚程序逻辑,或锁正某个对象时间过长,都极可能造成死锁。
关于死锁的一个经典问题是哲学家就餐问题,楼主可以参考一下。至于楼主所说的问题,则一定要知道你的具体情况是什么,才能知道怎么样去解决。。。
jc8futao
2007-03-16
打赏
举报
回复
楼主应该去看看操作系统概论的书,上面有几种模型——读者,写者模型、生产者,消费者模型。还有好多算法,如银行家算法。可以考虑自己实现算法
jc8futao
2007-03-16
打赏
举报
回复
你的类只是向操作系统提出画图的要求,绘图的过程操作系统会自己完成的。
frland
2007-03-15
打赏
举报
回复
要用多线程,就应该好好研究MSDN里提供的东西,你找不到更合用的了
li45214521
2007-03-15
打赏
举报
回复
mutex 可以限制只是一个线程访问
bool bCreatedNew;
//Create a new mutex using specific mutex name
Mutex m =new Mutex( false, "myUniqueName", out bCreatedNew );
if( bCreatedNew )
Application.Run(new yourFormName());
li45214521
2007-03-15
打赏
举报
回复
System.Object lockThis = new System.Object();
lock(lockThis)
{
// Access thread-sensitive resources.
}
.................................................
灰太狼
2007-03-15
打赏
举报
回复
在同一时刻只许一个线程操作这个类
灰太狼
2007-03-15
打赏
举报
回复
在两个线程的开始处用mutex来锁定。
ziqing
2007-03-15
打赏
举报
回复
顶!
ziqing
2007-03-15
打赏
举报
回复
lock后面的东西不是锁的目标,它只是个标志量
=============================================
有这种情况,同时有两个线程,分别调用两个类的方法进行修改同一对象,怎样加锁!!
lr21shiji
2007-03-15
打赏
举报
回复
lock
sunrobust
2007-03-15
打赏
举报
回复
lock后面的东西不是锁的目标,它只是个标志量.
ziqing
2007-03-15
打赏
举报
回复
谢谢楼上的,
灰太狼
2007-03-15
打赏
举报
回复
參看
http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx
有沒有幫助
ziqing
2007-03-15
打赏
举报
回复
现在是这种情况,我要用多线程在一个画布上画图形,有画圆的类,有画线的类,
还有画三角的类,每一个类里面要对往画布上绘制图形。怎么对每个类的绘制代码块进行加锁!
ziqing
2007-03-15
打赏
举报
回复
viena(维也纳nn)
是的,在多个类中都要对同一个对象进行引用,操作,
加载更多回复(8)
Java面试必问:
死锁
(
多线程
死锁
+数据库
死锁
)
死锁
是怎么造成的?
多线程
锁定
同一
资源会造成
死锁
线程池中的任务使用当前线程池也可能
出现
死锁
参考连接: https://blog.csdn.net/qq_35064774/article/details/51793656 情况一:
死锁
是两个或多个线程互相等待对方所有用的资源情形:现在有线程1和线程2。线程1执行过程中,先锁定了
对象
a,然后需要再锁定b才能继续执行代码;而线程2正巧相反,先...
线程安全——线程安全
问题
是指多个线程访问
同一
对象
时,可能因竞争资源而导致数据不同步的
问题
。需要在代码中加入必要
1.1 什么是线程安全?线程安全(Thread Safe)是指当多个线程访问一个
对象
时,如果不考虑
多线程
运行的调度或者交替执行,并且 guarantees 不发生未知行为的话,那这个
对象
就是线程安全的。也就是说,任何时候不同的线程都能正确地使用该
对象
。无论从哪个角度来看都是安全的。一般情况下,一个类是线程安全的,当且仅当对其所有公共方法进行串行化时,它才是线程安全的。换句话说,对于一个类的每个 public 方法,都不需要做额外的同步措施,这个类才是线程安全的。那么,如何才能做到线程安全呢?
mysql
多线程
死锁
_mysql中
死锁
的
出现
以及解决情况
为什么要加锁
问题
背景当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取
同一
数据的情况。若对并发
操作
不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。要解决的
问题
多用户环境下保证数据库完整性和一致性锁是什么在计算机科学中,锁是在执行
多线程
时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据
对象
...
多线程
死锁
的产生以及如何避免
死锁
一、
死锁
的定义
多线程
以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的
问题
——
死锁
。所谓
死锁
是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。 下面我们通过一些实例来说明
死锁
现象。 先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如 果有两辆汽车分别从桥的左右两端驶上该桥,则会
出现
多线程
导致oracle锁定,单
对象
死锁
——数据库锁与
多线程
锁共同作用造成的
死锁
...
死锁
是一种非常不受欢迎的现象,对于不含数据库的系统内
死锁
,我相信绝大多数程序员都能够避免。不要
出现
同步代码块的嵌套一般就可以避免
死锁
,但还有两个
问题
:我能否确定程序中同步代码块没有嵌套?业务需求就要求我必须要锁多个
对象
怎么办?对于第一个
问题
,有的人可能觉得很简单,我自己写的代码,我还不知道吗?正常情况下是这样的的,但如果你使用了JDK中的一些线程安全
对象
,那就不一定了,比如StringBuffer...
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章