在主程序中启动n个线程的问题!!!(50分)

  • 主题发起人 主题发起人 zythuman
  • 开始时间 开始时间
Z

zythuman

Unregistered / Unconfirmed
GUEST, unregistred user!
在主程序中同时启动N(N是一个不确定的数字,根据执行情况而定)个线程,这N个线程并没有同步关系,但是同时执行N个线程程序的主窗体反应太慢,怎样才能控制这N个线程一个一个的执行,也就是当第1个执行完毕后在启动第2个,请高手指点一下,谢谢!!!
 
既然需要一个一个的执行,干嘛要使用线程啊,如果真的需要这样做,那就在每一个线程调用起来以后主程序就调用thread.waitfor等待它执行完毕,再启动下一个线程就可以了,当然你线程里的代码也要做相应的处理。
 
兄弟提问真有意思.[:D]
 
控制是可以,你就此线程在动,别的线程就暂停他就可以了,但这样不怎么好,还不如不要多线程了,
其实你的问题不在这里,是你的线程的优先级别问题,还有就是没有交还时间片给系统别的线程用,你的程序的CPU一定占了90%以上,你每个线程执行完一次就sleep(0)或sleep(3),主窗体(主线程)反应就没有问题的了
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3450724
madic求助阿
 
怎样才能控制这N个线程一个一个的执行,也就是当第1个执行完毕后在启动第2个,请高手指点一下,谢谢!!!
一个个顺序执行不就等于一直只有一个子线程和一个主线程在运行了?
这样的话你把N个线程的功能写成N个过程,然后由一个线程去循环执行!
我想这样肯定比N个线程去执行N个过程节省资源。毕竟每个线程都要由系统去管理,这个管理本身也会占有系统效率
 
简单啊。执行完一个后发一条消息。收到消息再执行下一个
 
所有线程使用同一个临界区变量
 
楼主:
你这样做简直在搞笑。
首先开多线程一般是存在并行运行才开的,但开多线程肯定会提高了系统资源的占有率。
而楼主开的多线程并不存在并行性,这不光浪费资源而没有提高系统性能。
举个最简单的例子,你各个线程的Create,free 就是浪费。
但是有时候虽然浪费资源但我们还要开多线程,
比如说吧如果在一个线程内执行文件下载而还要在statusbar上显示下载了几个文件,这时就必须开多线程,为的是在statusbar上显示当前进度,但并没有提高下载速度,
这些需要具体问题具体分析了
 
to zythuman:
用CreateThread()创建线程,其中dwCreationFlags设为CREATE_SUSPENDED。这时线程已创建,但不运行。
用 ResumeThread运行线程
用 SuspendThread挂起线程
用 TerminateThread 结束线程
 
多人接受答案了。
 
后退
顶部