Нужно сообщение от ОС Windows о снятии потока с проца!!
Добавлено: 14 апр 2005, 01:38
Постановка вопроса:
"Разрабатывается программа под ОС Windows 2000. Одним из её элементов является замер времени выполнения определённых фрагментов кода. Есть функция для снятия показаний системного таймера. Эти функция вызывается в начале процесса замера и по его окончании. Вот тут и возникает проблема. Замеренное время больше реального времени выполнения этого фрагмента кода. И дело тут вот в чём: как известно, Windows - многозадачная ОС, поэтому в какие-то моменты процесс (для которого производится замер) снимается с процессора, и на процессоре выполняется другой процесс (например, какой-нибудь системный), потом наш процесс возвращается на процессор. В результирующее время попадают те интервалы времени, в которые на процессоре находятся посторонние процессы. Выход представляется таким: снимать показания системного таймера перед снятием с процессора и после постановки на процессор нашего процесса, и исключать продолжительность этих промежутков из общего времени. Вот только как отловить моменты, в которые происходит снятие с процессора и постановка на процессор нашего процесса. Может Windows посылает какое-нибудь сообщение процессу, типа: "Вот ты сейчас будешь снят" и "Сейчас ты вернёшься на процессор". Но какие это сообщения мне неизвестно. Есть версия, что эта информация относится к недокументированным возможностям Windows."
Буду очень благодарен всем тем, кто сможет предложить разумные идеи для решения поставленной проблемы. Особо отличившихся угощу пивком!!
Всем заранее спасибо!!
"Разрабатывается программа под ОС Windows 2000. Одним из её элементов является замер времени выполнения определённых фрагментов кода. Есть функция для снятия показаний системного таймера. Эти функция вызывается в начале процесса замера и по его окончании. Вот тут и возникает проблема. Замеренное время больше реального времени выполнения этого фрагмента кода. И дело тут вот в чём: как известно, Windows - многозадачная ОС, поэтому в какие-то моменты процесс (для которого производится замер) снимается с процессора, и на процессоре выполняется другой процесс (например, какой-нибудь системный), потом наш процесс возвращается на процессор. В результирующее время попадают те интервалы времени, в которые на процессоре находятся посторонние процессы. Выход представляется таким: снимать показания системного таймера перед снятием с процессора и после постановки на процессор нашего процесса, и исключать продолжительность этих промежутков из общего времени. Вот только как отловить моменты, в которые происходит снятие с процессора и постановка на процессор нашего процесса. Может Windows посылает какое-нибудь сообщение процессу, типа: "Вот ты сейчас будешь снят" и "Сейчас ты вернёшься на процессор". Но какие это сообщения мне неизвестно. Есть версия, что эта информация относится к недокументированным возможностям Windows."
Буду очень благодарен всем тем, кто сможет предложить разумные идеи для решения поставленной проблемы. Особо отличившихся угощу пивком!!

Всем заранее спасибо!!