Re[2]: Ошибки тестирования
От: tarkil Россия http://5209.copi.ru/
Дата: 14.01.05 07:34
Оценка: 8 (2)
Здравствуйте, rh2000, Вы писали:

R>1. Вызов Sleep(0) был поставлен сознательно для ужесточения условий тестирования. Как я указал в заметке, тесты предназначены для оценки общих издержек на переключение между потоками. Пусть уж лучше эти издержки будут немного завышены, чем занижены


Кстати, а вызов Sleep(0) точно вызвает переключение контекста, нет ли там проверки if( Period == 0 ) return? Помнится, я написал ради эксперимента цикл.

for(;;)
    Sleep( 0 );

И запустил. Других активных потоков не было. Загрузка процессора была 100%. Замена на Sleep(1) сразу уронила загрузку до 2-3%.

Или это происходит потому, что планировщик берёт на себя управление, смотрит, нет ли других кандидатов, их нету и сразу запускает поток ещё раз? А, типа, в случае Sleep(1) он считает обязанным хоть сколько-то потормозить?
--
wbr, Peter Taran
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.