| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Простой потока |
| Автор: Toohtik 24.10.2007, 00:15 |
| Каким образом можно узнать о приостановке потока. Я слыхал, что это все делается через структуру CONTEXT, но никак не найду соответствующий регистр. В принципе, если есть какой то метод MFC класса CWinThread, то он тоже пойдет. |
| Автор: SergeCpp 24.10.2007, 08:39 |
| Если это текущий поток, то в момент проверки он не простаивает Иначе можно вызвать http://msdn2.microsoft.com/en-us/library/ms686345.aspx и по результату выяснить состояние, потом при необходимости можно восстановить состояние потока, вызвав http://msdn2.microsoft.com/en-us/library/ms685086.aspx Или же наоборот (Resume и Suspend) Какую последовательность использовать — зависит от логики программы (например, если останавливать поток нежелательно, вызовите сначала Resume) |
| Автор: alias_trinity 24.10.2007, 15:00 | ||||
| Есть натив функция NtQuerySystemInformation С флагом SystemProcessesAndThreadsInformation получаешь процессы с приатаченными детальными структурами по всем потокам в этих процессах. Далее выбираешь нужный процесс и проходишся по массиву структур его потоков. В них есть поля State/WaitReason - это то, что тебе нужно. Таблица состояний для State:
Таблица состояний для WaitReason:
З.Ы. Сделай импорт ф-ции с ntdll.dll или подключи аналогичную либу |
| Автор: alias_trinity 26.10.2007, 09:16 | ||
Если с Натив АПИ никогда не работал, то состояние потока можно узнать так:
|