Как получить уведомление о переключении контекста в Windows (7) - PullRequest
1 голос
/ 01 февраля 2011

Для некоторых ОСРВ существует какое-то событие или даже функция вызова, которая вызывается, когда ядро ​​переключается или даже выходит из потока.В pSOS это называлось TaskSwitchCallout.В этом у нас будет код для увеличения счетчиков, благодаря которому мы будем знать, сколько процессорного времени занимает поток.В Qnx вы можете подписаться на событие, которое происходит, когда ядро ​​включило задачу, и выполнить то же приращение счетчика.

Есть ли эквивалент в Windows?Часто в Windows мы не можем определить, когда именно контекст потока был включен или выключен относительно других потоков, работающих в системе (читай: управляемый код).

Пожалуйста, не спрашивайте, почему я пытаюсь это сделать, я не могу об этом говорить.Однако я могу сказать, что счетчик переключения контекста в Windows perfmon недостаточен.Но я полагаю, что счетчик переключения контекста в perfmon должен откуда-то получать эту информацию ... Я пытаюсь получить доступ к ней где-то на основе потока.

1 Ответ

1 голос
/ 08 февраля 2011

Windows не уведомляет потоки о переключениях контекста.

Если вам нужна информация о синхронизации, используйте GetThreadTimes или QueryThreadCycleTime или один из счетчиков производительности.

В качестве альтернативы вы можете использовать планировщик пользовательского режима Windows 7, поэтому вы отвечаете за переключение контекста: Планирование пользовательского режима

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...