MFC 多线程运行过程中如何降低CPU占用率?
在做一个数值计算软件时需要运用多步循环计算,每个循环中的一部分运算用启动多线程的方法来实现并行计算,
最开始是在每一步循环开始的时候用AfxBeginThread() 启动一个线程,在该循环结束时结束线程,结果发现这种方法的耗时比单线程计算还多,估计是每一步循环启动线程需要消耗的时间超过了并行计算节约的时间。
后来是采用在所有循环开始前启动一个线程,并设置一个全局标志量,线程中利用while()函数判断是退出,等待还是执行计算。
...
while(!bExit)//bExit表示退出的全局标志量,由主线程控制
{
if(bStart)//表示并行计算开始的全局标志量,由主线程及辅助线程顺序控制
{
////计算代码
****
////
bStart=false;//计算结束
}
...
这样计算时间倒是减少了,但是CPU的在不需要进行并行计算时的占用率也很高,
有没有其他更好的方法,在不进行并行计算时降低CPU的占用率呢?
}