2015-04-23 59 views
0

所以我的线程正在调用这个函数,我想这是因为无限循环,我得到100%的CPU使用率。使用100%CPU的线程

我只想让线程检查timeInSeconds> stoptimer(也许如果我可以检查例如每10秒而不是无限循环,CPU的问题将被消除)。

如果某些事件发生,startTime会被主程序复位,所以如果事件一段时间没有发生,基本上线程会停止我的主程序。

void foo(){ 
    while(true){ 
    clock_t endTime = clock(); 
    clock_t clockTicksTaken = endTime - startTime; 
    double timeInSeconds = clockTicksTaken/(double) CLOCKS_PER_SEC; 

    if (timeInSeconds > stoptimer){ 
      cout << timeInSeconds << " seconds passed, closed due to timeout." << "\n"; 
      stop = 1; 
      break; 
    } 
} 

}

回答

0

你是对的,你需要插入循环内睡眠,一个500毫秒睡眠要充足。

+0

void foo(){cout <<“test1”; while(true){clock_t endTime = clock(); clock_t clockTicksTaken = endTime - startTime; double timeInSeconds = clockTicksTaken /(double)CLOCKS_PER_SEC; cout <<“test2”;如果(timeInSeconds> stoptimer){cout << timeInSeconds <<“秒传递,由于超时关闭。” <<“\ n”; stop = 1;打破; } cout <<“test3”;睡眠(5); }}在这种情况下,它不工作,我没有得到任何打印输出。 – gkatsarov