| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Свой микропланировщик |
| Автор: IGanja 28.3.2012, 09:50 | ||
| Пишу планировщик, который должен с заданной частотой запускать потоки. Потока два, основной поток процесса и бэкграунд поток. Задача раз в такт планировщика запускать одну итерацию основного поток, по завершению итерации оставшееся время такта отдавать бэкграунду. В следующий такт работа бэкграунда приостанавливается и запускается следующая итерация основного потока и так далее. Принудительно устанавливаю выполнение процесса на конкретное ядро, чтобы потоки не выполнялись на разных ядрах, далее основному потоку ставлю приоритет Highest, бэкграунд потоку Idle. Устанавливаю ожидаемый таймер с автосбросом и запускаю. Получаю совсем не то что хочу, в лучшем случае бэкграунд всегда успевает выполнится до конца, в худшем оба потока почему то начинают работать вместе. Почему бэкграунд не вытесняется более приоритетным потоком? Ниже приведен код программы.
|
| Автор: Dem_max 28.3.2012, 11:41 | ||
Ты первым делом поток запустил и он тут же выполнился, потом только выполнилась func(). Все правильно. |
| Автор: IGanja 29.3.2012, 18:41 | ||
| Спасибо за помощь, решение нашел с помощью функций SuspendThread(hBackgrnd); ResumeThread(hBackgrnd); обрамив ими задачу основного потока
|