Как говорит название, у меня есть поток создается с помощью:Насколько важно вызвать Sleep() в бесконечном цикле?
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)this->TaskProc, this, 0, NULL);
В TaskProc
, у меня есть бесконечное время цикла:
while(true)
{
// large code with lots of initialization
// get task from another thread
// Switch (task)
// at each case you would perform a task
Sleep(1);
}
Я пытаюсь сократить время мой код принимает и я чувствую, что Sleep(1)
в конце цикла while не требуется! так как в цикле while есть довольно много вычислений, прежде чем нажать Sleep()
, правильно ли удалить Sleep()
?
EDIT1: Я не знаю, почему этот вопрос вызвал путаницу и несколько голосов, это часть очень большого кода со многими потоками (около 5), все, что я хотел знать, когда мы должны добавить подождите в каждом цикле! Принятый ответ, похоже, дает хорошее представление о том, с чего начать. Хотя, я думаю, что может быть лучший ответ на этот вопрос.
Если вы хотите сократить время, затрачиваемое вашим кодом, вы, вероятно, захотите переместить '// большой код с большим количеством инициализации' из вашего цикла while ... :-) –
Почему вы спите в первом место. Сон - одна из тех функций, которые вы, вероятно, никогда не должны звонить. –
@ScottMermelstein, необходим большой код, к сожалению, нет места для большей оптимизации :( – Samer