F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #1 我写了个线程程序,里面包含两个线程,线程之间没有相互调用,每10秒钟去进行一个操作,可如果程序运行一个晚上的话,到第二天这个程序就会死掉,想请问一下,都又那些方面的原因,谢谢!
B ball_cao Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #2 检查一下线程是否引用了非线程安全的单元 包含间接引用
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #3 "非线程安全的单元"是指包含了VCL非线程安全控件的单元吗
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #4 TClientDataSet 应该是线程安全控件吧 其他还有什么原因,可能造成线程死锁的问题,请高手指点,急!急!急!
Z zzadsl Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #5 能把代码贴出来看一下? 每10秒钟进行一次操作,是不是时间发生器的问题?
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #6 时间发生器的问题?什么意思啊, 你想要那块的代码啊
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #8 是不是还有其他情况,或者给咱们再说详细点,差不多就散分啊~!
K kinneng Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #9 同意楼上,先检查内存是否泄漏,因为是长时间之后才发生问题,可能是泄漏累积造成的。
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #10 那我应该怎么检查,本人是个莱鸟,请高手指点
N newsmile Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #11 这种情况基本上都是内存泄漏引起的,主要原因就是反复创建对象而未释放,最后把可用内存都消耗完了导致程序死掉(有可能会死机),还有一种情况就是线程互锁导致程序死掉(一般不会死机)。你的情况看来比较象内存泄漏,因为程序运行较长时间才死掉。重点检查你创建的对象看有没有反复创建而未释放的对象。
这种情况基本上都是内存泄漏引起的,主要原因就是反复创建对象而未释放,最后把可用内存都消耗完了导致程序死掉(有可能会死机),还有一种情况就是线程互锁导致程序死掉(一般不会死机)。你的情况看来比较象内存泄漏,因为程序运行较长时间才死掉。重点检查你创建的对象看有没有反复创建而未释放的对象。
F feiyan_918 Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #12 请大家给推荐个测试软件,能测内内存泄露的,最好是免费的,谢谢
Z zzadsl Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-01 #13 线程开始 var i:integer; begin i:=0; while i<2do begin sleep(10000);//暂停10秒 线程代码,要退出把I值赋值2 i:=赋值2;//重新赋变量i的值为0,形成死循环 end; ////////////////////// 让线程一直运行着
线程开始 var i:integer; begin i:=0; while i<2do begin sleep(10000);//暂停10秒 线程代码,要退出把I值赋值2 i:=赋值2;//重新赋变量i的值为0,形成死循环 end; ////////////////////// 让线程一直运行着
N newsmile Unregistered / Unconfirmed GUEST, unregistred user! 2008-02-02 #15 http://www.delphibbs.com/keylife/iblog_show.asp?xid=22834