5 микросекунд?!
GetThreadTimes()
измеряет количество квантов, потраченных потоком в спящем режиме пользователь / ядро.Я наблюдал типичный квант планировщика 10-15мс на Win32.Ниже одного кванта вы обнаружите, что времена, когда GetThreadTimes()
отчеты не изменяются, - это просто умножает (целое) число прошедших квантов (в каждом состоянии) на продолжительность одного кванта.
Ниже 10-15 мсек, вы действительно не можете ожидать, что любое из значений, возвращаемых GetThreadTimes()
, будет точным. ОЧЕНЬ часто вы будете видеть только одно из трех измеренных значений, обновляемых одновременно;именно так, как вы обсуждали.
Как Linux, так и Win32 ведут себя странно, сообщая о времени выполнения потоков в масштабах, которые вы обсуждали.Единственные обнаруженные мной операционные системы, которые действительно могут измерять запланированное время выполнения до 5 микросекунд, - это Mac OS X и VxWorks - QNX, вероятно, также имеет такую возможность.