URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1359
[ Назад ]

Исходное сообщение
"Загрузка процессора"

Отправлено darkserj , 05-Фев-03 15:05 
Есть код:

    while(!terminate_flag)
    {
        if(ConnectionQueue.Size() && Threads.GetSize()<MAXTHREADS)
        {
            int nsid;
            ConnectionQueue.Get(nsid);
            ProcessConnection(nsid);
        }
        else
            sleep(0);
    }

и этот код жрет 100% времени процессора, хотя sleep и присутствует.
Вопрос в том, где у меня кривые руки ?


Содержание

Сообщения в этом обсуждении
"RE: Загрузка процессора"
Отправлено uldus , 06-Фев-03 17:41 

          
>sleep(0);

>и этот код жрет 100% времени процессора, хотя sleep и присутствует.
>Вопрос в том, где у меня кривые руки ?

А разве в sleep с параметром 0 есть толк ? IMHO, точно также получается, что и без этого sleep.


"RE: Загрузка процессора"
Отправлено David , 09-Фев-03 23:16 
>
>
>>sleep(0);
>
>>и этот код жрет 100% времени процессора, хотя sleep и присутствует.
>>Вопрос в том, где у меня кривые руки ?
>
>А разве в sleep с параметром 0 есть толк ? IMHO, точно
>также получается, что и без этого sleep.

Толк то от sleep(0) есть, насколько я знаю - он заключается в том, что происходит переключение контекста процессора (кажется это так называется), т.е. грубо говоря данный процесс не будет властвовать безраздельно. Но для того, чтобы камень не грузить, надо хоть какую-нибудь задержку сделать имхо. Если целая секунда - это много, то man usleep или man nanosleep.