Есть код:while(!terminate_flag)
{
if(ConnectionQueue.Size() && Threads.GetSize()<MAXTHREADS)
{
int nsid;
ConnectionQueue.Get(nsid);
ProcessConnection(nsid);
}
else
sleep(0);
}и этот код жрет 100% времени процессора, хотя sleep и присутствует.
Вопрос в том, где у меня кривые руки ?
>sleep(0);>и этот код жрет 100% времени процессора, хотя sleep и присутствует.
>Вопрос в том, где у меня кривые руки ?А разве в sleep с параметром 0 есть толк ? IMHO, точно также получается, что и без этого sleep.
>
>
>>sleep(0);
>
>>и этот код жрет 100% времени процессора, хотя sleep и присутствует.
>>Вопрос в том, где у меня кривые руки ?
>
>А разве в sleep с параметром 0 есть толк ? IMHO, точно
>также получается, что и без этого sleep.Толк то от sleep(0) есть, насколько я знаю - он заключается в том, что происходит переключение контекста процессора (кажется это так называется), т.е. грубо говоря данный процесс не будет властвовать безраздельно. Но для того, чтобы камень не грузить, надо хоть какую-нибудь задержку сделать имхо. Если целая секунда - это много, то man usleep или man nanosleep.