thread(100分)

  • 主题发起人 主题发起人 guo_qpeter
  • 开始时间 开始时间
G

guo_qpeter

Unregistered / Unconfirmed
GUEST, unregistred user!
各位就命
我在一TIMER 中 云新两个 THREAD
IF then
THREAD A
THREAD B
end;
要求:
THREAD B 要在THREAD A 运行结束才运行.
 
建立时用inherited create(true),用resume方法使它执行。
把threadb的建立放在threada的OnTerminate中。
 
那还叫什么线程,顺序执行?
要实现也可以,要用同步信号
 
人家要求THREAD B 要在THREAD A 运行结束才运行,还要什么同步信号??
 
procedure ThreadB.Execute;
begin
waitforsingleobject(ThreadA.ThreadHandle, INFINITE);
....
end;
 
为什么不把线程B要做的事放在线程A中完成呢?
线程本身就是为并发处理, 既然是顺序处理, 没必要使用2个线程
分段完成.
如果一定要的话, 可以采用www说的做.
 
个人观点:简单的事情不要弄复杂了,
IF then

THREAD A
THREAD B
end;
这么简单的事为什么要用到同步信号呢?
为什么非得在一个线程中处理另一个,<stong>无关</strong>的线程的事呢?
 
Thread A is to dial and connect to a server to receive data
(using File Transfer Service)
Thread B is to dial and connect to a server to send data
(also using FTS system )
我在TIMER 中触发. 美秒触发一次.
味到时间点,则显示状态
到时间点,触发 收 和 发
 
先建好两个threada,threadb,
在timer的ontimer中
begin
threada.resume;
threadb.resume;
//每秒中执行一次能行吗???? threada,threadb执行完估计要多于一秒钟。
//如果多于,这样就不行了。
end;
方法应该是这样的。
 
执行时间从几秒到一分钟 依赖网路的速度.
 
那每秒种触发一次是怎么回事?
 
是要显示状态
我在程序中右变量加以判断.
我原先想以一全局变量来 RUN THREAD A then
RUN THREAD B
但是运行时中得不到像要的结果.
帮忙了!
谢谢!
 
还是不明白。
 
用TThread.WaitFor试试看
 
为什末要在Timer中?
thread1.execute;
begin
while(true)
begin
if termited then
exit;
end;
end;

thread2.execute;
通上,Waitfor来同步
 
各位:
大家不凡用一下网路的下载软件. 那有线程
我的程序结构如下
主程序 ---- TIMER 每秒触发一次.
到一时间点 触发 FILE_RETRIEVER ( 通过拨号网络 -> FTS 服务器 ->
邮箱去文件)
触发 FILE_SENDER ( 通过拨号网络 -> FTS 服务器 -> 发文件到邮箱)
如有两个MODEM 我也可解决.
但现在只有一个MODEM.通过一个串口.这就不能共享.所以只能 THREAD A 再
THREAD B. 现在线程的执行步骤我已能控制. 但经常会出现拨号中MODEM INITIALIZE TIMEOUT . 我如何能知道THREAD A 已TERMINATE. (真正的结束).
各位如有兴趣,我可发我的文件让大家看看, 就知道我所说的意思.
请大家帮忙了!
(各位如还记得 ORACLE BLOB ANDdo
A 问题 吗, 跟这项目事相关的. 那道题
我自己解决的.我不能拿回我的分)
一般尽量少用THREAD.WAITFOR. 这是回应上面极为朋友的.
谢谢!
 
奇怪,我的问题在待答中找不到
而且我也都没受到论坛的邮件
 
指想把问题提前
 
后退
顶部