Моя тема в очереди готовности? - PullRequest
1 голос
/ 08 августа 2011

Мне нужно войти, когда и как долго определенный поток находится в очереди готовности. Интересно, есть ли программный способ сделать это с помощью C #. Скажите, если вам нужна дополнительная информация ...

Спасибо заранее, Ротем Варон.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Вы можете проверить свойство ThreadState объекта Thread.

См. Возможные значения здесь: http://msdn.microsoft.com/en-us/library/system.threading.threadstate.aspx

WaitSleepJoin указывает, что он чего-то ждет, Running означает, что он находится в «готовой очереди», насколько я знаю.Надеюсь, это поможет.

0 голосов
/ 12 августа 2011

Информация о состоянии ядра потока доступна в структуре ядра KTHREAD , доступной через блок потока в режиме ядра.

Вопрос в том, как это отобразить или открыть для программы в режиме пользователя? Вероятно, лучшее решение, учитывая время и навыки, - написать драйвер ядра.

В качестве альтернативы вы можете посмотреть счетчики производительности Windows, которые уже могут это сделать для вас. В любом случае вам придется прибегнуть к довольно неточным опросам (вы не получите уведомление, КОГДА состояние потока меняется).

WMI-класс Win32_Thread может быть полезен для вас, особенно поле ExecutionState.

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