首页 新闻 会员 周边

多线程程序总是失去响应,怎么避免?

0
悬赏园豆:5 [已关闭问题] 关闭于 2009-05-12 00:50

我在写一个蜘蛛程序,多线程爬网页,并对网页进行分析。

程序运算很多,时刻保持CPU占用率50%以上。

长时间运行时经常会发现程序变为“未响应”,并且CPU占用率变为0,调试时遇到这种情况无法暂停,只能强关。

我的程序有七八个线程用于爬行和分析网页,有一个backgroundworker定时(45秒)更新界面输出消息,以及另一个backgroundworker定时(360秒)保存配置,主线程通常什么也不做。

开始以为是爬行的线程抢占界面线程更新,造成失去响应,于是把那些线程都设为最低优先级、后台线程,但是问题依旧,经常是看会儿网页切回程序就无响应了,如果仅仅是界面无法及时更新的话,其CPU占用率不可能降为0,也就是说其他线程肯定也都被停了。

我怀疑是.Net或是Windows的什么机制导致的?请各位指点一下。

该程序没有用到锁,所以排除死锁可能;也绝对不会是死循环,死循环CPU占用率不会降下来;况且不论死循环、死锁,都不会影响到不相关的线程的。

斯克迪亚的主页 斯克迪亚 | 老鸟四级 | 园豆:4124
提问于:2009-05-09 02:00
< >
分享
所有回答(2)
0

问一个问题,楼主不用锁,是不是实现了其他同步的机制?貌似很多共享资源

DiryBoy | 园豆:639 (小虾三级) | 2009-05-09 18:35
0

你试着看一下httpReponse那里,我发现只要网络卡住了,即使是异步的,一样会卡死。

shen6041 | 园豆:202 (菜鸟二级) | 2012-09-25 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册