2015-04-23 93 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