首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 共享软件 >

线程池,管理线程的优先级高了,任务排空速度反而低了,为什么?该怎么解决

2012-04-25 
线程池,管理线程的优先级高了,任务排空速度反而低了,为什么?我用VC++、windows api做了一个模拟线程池,有个

线程池,管理线程的优先级高了,任务排空速度反而低了,为什么?
我用VC++、windows api做了一个模拟线程池,有个任务列表,有个线程列表,外部想任务列表添加任务,线程池管理线程发现任务列表中有任务时将其取出交友线程列表中的空闲者来完成。

现在发现一个奇怪的现象,大家都知道线程有优先级,于是我给线程列表中的线程赋予的优先级都是NORMAL、ABOVENORMAL、HIGHEST。

现在有一个标准的任务,格式化一个数组的任务,共12345个,也就是调用添加任务的接口12345次,每个任务都是一样的,且相互独立。现在我给线程池的内部管理线程赋予NOMAL普通优先级,线程池高度固定为5,完成任务需要3秒钟,可当我给池管理线程赋予最高优先级TIME_CRITICAL,完成同样任务的耗时却增加到了25~30秒。我看了是因为管理线程的优先级高了,任务排空速度反而慢了,CPU占用是低了,可任务完成速度也大大下降了。

我是担心任务太多或者太耗资源,而导致管理线程的时间分配被具体的工作线程冲淡,以致于管理线程得不到时间片,可结果却是任务排空速度大大下降了

请问怎么回事啊?!

没有足够点数了,所以发到这里,请见谅啊

[解决办法]
不干活,就知道捣乱,呵呵呵

热点排行