多线程的死锁问题(200)

  • 主题发起人 主题发起人 huangsong
  • 开始时间 开始时间
H

huangsong

Unregistered / Unconfirmed
GUEST, unregistred user!
程序启动后创建了一个线程A,在A线程中有一段同步代码procedure B,使用方式Synchronize(B),然后在B过程中创建了一个窗体对象FormC,FormC启动后创建了一个线程D,在FormC释放的时候释放线程D现在在多核CPU的电脑上出现死锁(单核很少死锁),不能大幅度改动代码,请问如何通过调整FormC和线程D的代码来避免死锁的出现。
 
多线程搞过,不过类似问题没搞过.//------------------严正声明!此帖在全世界只有一个沙发。本人是该沙发的唯一合法代表。自古以来本人一直对该沙发行使着主权。沙发两边的扶手是沙发不可分割的一部分,任何企图想制造两个沙发,或一个沙发一个扶手的行为,都必将遭到包括中国人民在内的全世界人民的反对!各族人民反对沙发分裂、维护沙发统一、维护沙发稳定的决心是坚定不移的,任何破坏沙发稳定、制造沙发分裂的图谋都是不得人心的,是注定要要失败的!
 
没有代码搞个毛。
 
使用方式Synchronize(B),然后在B过程中创建了一个窗体对象FormC既然是同步,估计是访问窗体对象吧!那么这么改,把创建了一个窗体对象FormC的代码放到窗体代码里,B过程用消息通知窗体进行创建FormC
 
原因是不是procedure B重复调用,如果是在创建窗体对象FormC前延时,另线程D代码是不是很多,释放会慢,我以前解决方法是在线程中多处判断是否要结束
 
没有代码搞个毛。================================地质兄 不是不想贴代码 而是代码太多。。。使用方式Synchronize(B),然后在B过程中创建了一个窗体对象FormC既然是同步,估计是访问窗体对象吧!那么这么改,把创建了一个窗体对象FormC的代码放到窗体代码里,B过程用消息通知窗体进行创建FormC ==============================================主线程创建的话有个问题,就是会造成主窗体无法响应,直到弹出的FormC关闭为止原因是不是procedure B重复调用,如果是在创建窗体对象FormC前延时,另线程D代码是不是很多,释放会慢,我以前解决方法是在线程中多处判断是否要结束 ===================================这个错误不会犯的 呵呵
 
后退
顶部