Blue
Red
Green
Orange
Voilet
Slate
Dark

线程的怪问题(100分)

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

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
我程序启动的时候一开始线程的Execute 方法在不断执行,
我在里面设断点就一直运行,
但是过了一会这个方法就不执行了,
设断点都不从里面走了
奇怪啊,
 
C

Cut.fei

Unregistered / Unconfirmed
GUEST, unregistred user!
那就是你的这部分代码没有触发、运行。
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
但是我在线程启动以后,
从来没有执行过 停止线程的方法啊,
为什么Execute 方法就不执行了呢?
 

无业游民

Unregistered / Unconfirmed
GUEST, unregistred user!
执行完了嘛
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
to 无业游民,
线程一旦启动起来,Execute 方法是一直执行的,
期望得到真正的解答
 

张无忌

Unregistered / Unconfirmed
GUEST, unregistred user!
你的代码可能由问题,不是线程本身的问题
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
to 张无忌,
我知道是我自己程序的问题,
但是我并没有调用停止线程的方法,
我想知道还可能有其他的途径导致我线程的停止吗?
 

无业游民

Unregistered / Unconfirmed
GUEST, unregistred user!
不,你错了!
线程启动会执行Execute但是执行结束后线成就会终止!所以你在Execute中要使用循环
While not Terminateddo
.....;
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
to 无业游民,
这你说得很对,
我的Execute 方法是这样的,
while not Terminateddo
begin
1. Synchronize(Step);
if SleepTime > 0 then
Sleep(SleepTime);
end;

但是线程一开始开运行,
后来我在1的地方设置断点,发现根本就不从这里走了,
为什么呢? 能帮我解释一下吗?
 

无业游民

Unregistered / Unconfirmed
GUEST, unregistred user!
但从这一点代码来说,你说的问题绝对不会发生!一定是其他位置出了问题?
或者该线程不是退出了而是挂起了!查一查线程安全问题!
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
线程安全问题怎么查呢?
while not Terminateddo
begin
1. Synchronize(Step);
if SleepTime > 0 then
Sleep(SleepTime);
end;
在这后面我加了一句代码
showMessage('thread terminated!');
如果线程循环退出了应该会显示的,
但是我的程序这个语句却没有执行,
线程也不处理Step里面的语句了,
我想应该是挂起了吧,
我该怎么处理呢,
如果解决挂起的问题呢?
谢谢你的回复,



 

无业游民

Unregistered / Unconfirmed
GUEST, unregistred user!
这就不是三言两语就能解释清楚的了!你还是找本书看看吧!
 

青萍

Unregistered / Unconfirmed
GUEST, unregistred user!
查查SleepTime是多少??
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
我设置的SleepTime 是5,
我想Sleeptime 会带来不可预的程序特性,
但是5millisecond 以后为什么不自动 resume 呢?
 

青萍

Unregistered / Unconfirmed
GUEST, unregistred user!
测试一下sleeptime到底是多少
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
我断点跟踪是5
 
H

hellotao

Unregistered / Unconfirmed
GUEST, unregistred user!
我想知道有没有什么机制保证
让线程不会一直挂起,导致程序运行不下去的情况
还有, Synchronize方法 到底和使用 mutux, crticalsection 等有什么区别,
 
顶部 底部