Я следующий фрагмент кода на RedHat 6:CPU на Redhat 6
#include <unistd.h>
int main(int argc, char *argv[])
{
while(true)
{
#ifdef SLEEP
sleep(1);
#endif
#ifdef USLEEP
usleep(1000);
#endif
}
return 0;
}
Это, как предполагается, спать точно такой же maount так 1000 нас = 1 мс В RedHat 6, один со сном принимает 0 % использования все время. Тот, у кого есть спящий режим, занимает от 1,5% до 2% все время. У меня есть многие из них по всему серверу, который я поддерживаю. Любое объяснение, почему usleep гораздо более чувствителен к процессору на redhat 6? На redhat 5 я не вижу различий. Кстати, я вижу, что на redhat 6 процессор намного более чувствителен. Любые известные проблемы вокруг этого?
'usleep' принимает аргумент как ** microsecond **, а не миллисекунду. 1000000 микросекунда равна 1 секунде. поэтому вызовите 'usleep (1000000)' – VoidPointer
. Пожалуйста, прочтите мой комментарий ниже на ответе 1. 1000 us = 1 мс –
@issac, пожалуйста, прочитайте мой ответ ниже. – VoidPointer