线程的怪问题(100分)

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

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序启动的时候一开始线程的Execute 方法在不断执行,
我在里面设断点就一直运行,
但是过了一会这个方法就不执行了,
设断点都不从里面走了
奇怪啊,
 
那就是你的这部分代码没有触发、运行。
 
但是我在线程启动以后,
从来没有执行过 停止线程的方法啊,
为什么Execute 方法就不执行了呢?
 
执行完了嘛
 
to 无业游民,
线程一旦启动起来,Execute 方法是一直执行的,
期望得到真正的解答
 
你的代码可能由问题,不是线程本身的问题
 
to 张无忌,
我知道是我自己程序的问题,
但是我并没有调用停止线程的方法,
我想知道还可能有其他的途径导致我线程的停止吗?
 
不,你错了!
线程启动会执行Execute但是执行结束后线成就会终止!所以你在Execute中要使用循环
While not Terminateddo
.....;
 
to 无业游民,
这你说得很对,
我的Execute 方法是这样的,
while not Terminateddo
begin
1. Synchronize(Step);
if SleepTime > 0 then
Sleep(SleepTime);
end;

但是线程一开始开运行,
后来我在1的地方设置断点,发现根本就不从这里走了,
为什么呢? 能帮我解释一下吗?
 
但从这一点代码来说,你说的问题绝对不会发生!一定是其他位置出了问题?
或者该线程不是退出了而是挂起了!查一查线程安全问题!
 
线程安全问题怎么查呢?
while not Terminateddo
begin
1. Synchronize(Step);
if SleepTime > 0 then
Sleep(SleepTime);
end;
在这后面我加了一句代码
showMessage('thread terminated!');
如果线程循环退出了应该会显示的,
但是我的程序这个语句却没有执行,
线程也不处理Step里面的语句了,
我想应该是挂起了吧,
我该怎么处理呢,
如果解决挂起的问题呢?
谢谢你的回复,



 
这就不是三言两语就能解释清楚的了!你还是找本书看看吧!
 
查查SleepTime是多少??
 
我设置的SleepTime 是5,
我想Sleeptime 会带来不可预的程序特性,
但是5millisecond 以后为什么不自动 resume 呢?
 
测试一下sleeptime到底是多少
 
我断点跟踪是5
 
我想知道有没有什么机制保证
让线程不会一直挂起,导致程序运行不下去的情况
还有, Synchronize方法 到底和使用 mutux, crticalsection 等有什么区别,
 
顶部