我使用的是 继承Delhpi的线程类Thread类。创建了100了线程来使用。
开始运行还好的都是正常的,而且每个线程都是有Sleep时间的至少30秒吧。但是过了 N个小时后,CPU到达了100%这个问题,调试也不知道怎么调试。请高手分析下。 有哪些情况下, 会出现这种问题。 应该怎么解决???
开始运行还好的都是正常的,而且每个线程都是有Sleep时间的至少30秒吧。但是过了 N个小时后,CPU到达了100%这个问题,调试也不知道怎么调试。请高手分析下。 有哪些情况下, 会出现这种问题。 应该怎么解决???
解决方案 »
- 如何用Case语句对两个参数时行判断?
- 想学数据库编程
- 有关记录的长度问题
- 用DELPHI可以和BCB写的程序连接再一起吗?
- 寻求帮助EXCEL和STRINGGRID
- TQuery的Database属性是只读的,必须直接配置别名,那还有TDataBase控件有什么用
- 关于打印报表时如何使结果为0的字段不显示?
- 小问题:如何检测文件存在。
- 超级菜鸟问题
- VCL控件大制作!!!!!!高手来共同-----议论自制DELPHI控件!!!!!
- delphi 2007,import type library,build成功,install时提示Unable to install package...
- SQL语句关于日期比较
用waitforsingleobject吧。
因为,功能都是反应出来的。
从设计的角度来说,有必要用100个线程吗? 除非是非常多核的CPU,要不然一般的程序实在是用不着这么多的线程.
线程中使用SLEEP的确不好,虽然他不会造成主进程的阻塞。但是他一样消耗CPU资源。建议使用其他的方式来实现等待功能。
还有你可以测试下,CPU占用100%需要你100个线程中的几个同时工作才可以达到。
这样变下:
A:THandle;
A:= Tevent.create;
线程里
waitforsingleobject(A,30(秒));具体代码格式你修改下,【英文不好】。具体就是这样意思。如果A的事件永远不会触发的话!waitforsingleobject会30秒后自动退出。注意:waitforsingleobject进入函数后,退出的条件 只能是A被触发,或者后面的时间超时。不然退出不了这个函数。所以你在程序退出的时候,需要激活事件A.