社区
C#
帖子详情
关于多线程操作同一对象出现死锁的问题
ziqing
2007-03-15 01:36:23
我要同时运行多个线程,在线程中调用好多类,在这些类中都要对同一对象进行操作。怎么处理能最大限度的避免死锁情况。
...全文
878
28
打赏
收藏
关于多线程操作同一对象出现死锁的问题
我要同时运行多个线程,在线程中调用好多类,在这些类中都要对同一对象进行操作。怎么处理能最大限度的避免死锁情况。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
多线程
操作
同一
对象
深度解析
当多个线程同时
操作
同一
个
对象
时,主要面临三大
问题
:
问题
分析:实际包含三步
操作
多线程
执行可能丢失更新字节码证明: (2)
对象
状态不一致 竞态条件: 检查余额与扣款
操作
不是原子的,可能导致超额支出 特点:简单易用JVM自动管理锁获取/释放支持可重入 优势:可中断锁获取超时机制公平锁选项 性能对比:低竞争:原子类 > 锁高竞争:锁 > 原子类(避免大量CAS重试) 适用场景:频繁读
操作
状态变更不频繁示例:ConcurrentHashMap使用 5. 内存可见性保障 (1)
多线程
死锁
学习
多线程
死锁
死锁
:
死锁
是比例严重的错误 线程1 首先占有
对象
1,接着试图占有
对象
2 线程2 首先占有
对象
2,接着试图占有
对象
1 线程1 等待线程2释放
对象
2 与此同时,线程2等待线程1释放
对象
1 就会。。。一直等待下去,直到天荒地老,海枯石烂,山无棱 ,天地合。。。 Hero.java package com.company; /** @author slj @create 2020/11/18 */ import java.io.Serializable; public class Hero{
黑马程序员——java多线中的
死锁
问题
------- android培训、java培训、期待与您交流! ---------- 如果
多线程
出现
了两把锁,并且这两把锁互相嵌套,则有可能
出现
死锁
现象。 先看一段代码: class LockDemo { public static void main(String[] args) { DeadLock dl = new DeadLock(); T
java 线程同步、
死锁
转载地址:速学堂https://www.sxt.cn/Java_jQuery_in_action/eleven-thread-synchronization.html 什么是线程同步 同步
问题
的提出 现实生活中,我们会遇到“
同一
个资源,多个人都想使用”的
问题
。 比如:教室里,只有一台电脑,多个人都想使用。天然的解决办法就是,在电脑旁边,大家排队。前一人使用完后,后一...
使用Windbg分析
多线程
临界区
死锁
问题
使用Windbg分析
多线程
临界区
死锁
问题
分享。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章