![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
Добрый день!
Появилась проблема. Если в системе появляется более приоритетный поток(потоки) у меня может наступить "голодание", то есть моя программа со своими потоками не получит процессорное время (запускал CPUStress и понял, что это может быть проблемой). Поэтому появляется вопрос: Как отследить, что в системе появились или не появились не системные процессы(они вообще RealTime), для того, чтобы задать своим потокам равный приоритет? Главное ведь как я понимаю не только определить, что появился такой поток, но и во время(то есть до начала его работы) повысить приоритет своих потоков или снизить в случае завершения такого потока. Еще необходимо учесть, что виндовс сама повышает приоритет на некоторое время потоков, которые получили активность. Возможно ли все это осуществить? Поделитесь опытом, у кого он есть. Или идеяи, пожалуйста. -------------------- я не гольфист - я хоккеист |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
не понял проблемы... если программа должна работать при любых приоритететах сосуществующих процессов -- дай своей программе максимальный приоритет...
зачем такое шаманство? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
если запустить программу с максимальным приоритетом, то система будет а) тормозить, б) никакие другие программы не смогут работать. А система стоит на персональном ПК, где люди должны иметь возможность выполнять и ещё какие-нибудь действия. Но программа должна гарантированно получать данные при любых действиях пользователей и обновлять отображенную информацию, писать архивы и т.д.. Просто запретить пользователям использовать возможность изменения приоритетов можно, но не красиво - нет гарантии, что кто-нибудь не запустит с высоким приоритетом! Проблемы не будет, если на компьютер ставить только одну эту программу - это не серьезно. Коенчно, если поставить на Windows CE, то можно будет по таймеру выставить работу моих потоков. Однако, вопрос о распределении процессорного времени в системе реального времени Windows CE не нашел ответа ни в одном из форумов, а я пока этого тоже не знаю. Вот поэтому и хотелось бы сделать так как описано в вопросе.
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
система и так будет тормозить -- ты в момент запуска тяжелого процесса еще и своему приоритет повышаеш.
если твоя программа просто болтается в фоне ожидая тыка от пользователя даже с самым высоким приоритетом систему она грузить не будет ( если там, конечно, вечный цикл без паузы не не крутится ) писать архивы с максимальным приоритетом -- вообще убийство ( поставь рару хотябы normal и все поймеш ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
А вообще-то я в программе делаю посылки в ComPort и получаю ответы. Все это должно отображаться. И любые изменения в параметрах устройств должны быть отображены с максимальной приближенностью ко времени реального изменения параметров. И как ты представляешь решение такого вопроса? -------------------- я не гольфист - я хоккеист |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
ты писал:
и при этом хотел чтобы у программы был максимальный приоритет. вот я и предложил посмотреть что это будет... если читаеш из порта -- смело ставь максимальный приоритет -- всеравно синхронизация по событию. и тут варианта только два -- или не _загружать_ систему и терять данные или не терять данные но _загружать_ систему. -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
данные то я в любом случае не потеряю
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
то же самое касается отрисовки...
хотя теперь вообще не понятно в чем проблема если данные ты в любом сучае получиш то ты их и отрисовать всегда сможеш... и значи тс приоритетами играться не нужно... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
но получу то я их только тогда когда запрошу, могу потерять - таки некоторые переходные процессы. А отрисовывать надо, чтобы опереторы среагировали таки - Это раз. И вообще-то из основного окна иногда необходимо менять конфигурацию и параметры устройствов.
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
так нет что-ли способа все-таки хотя бы узнать, когда загружается другой процесс?
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
1: значит нужно выставлять максимальные приоритеты.
2: http://www.rsdn.ru/forum/Message.aspx?mid=562207 и дальше по ссылкам -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
можно обойтись и не выставляя максимальные приоритеты, немного подумав, можно их менять по ходу дела!
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| mo3art |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 29.9.2005 Где: пло не та 3 емля Репутация: нет Всего: нет |
- я чего-то не понимаю... если программа написана правильно, то она загружает ресурсы именно настолько, насколько ей они требуются - таким образом получается что "торможение" компа и работа других программ не должны зависеть от приоритета твоей программы. Чтение портов выполняй с максимальным приоритетом, а рисование и скидывание на диск с нормальным... расчётные задачи тоже можно выполнять с повышенным приоритетом, но не с реалтайм - использование объектов синхронизации спасёт процессор от ненужной работы... ЗЫ - кстати, процесс с большим приоритетом ты просто не увидишь из своей программы - она вообще не попадёт на проц пока такой процесс юзает систему... ЗЗЫ - Имхо, менять приоритеты это шаманство... ЗЗЗЫ - хотя конечно, если хочется, можешь изловчиться перехватывать вызовы CreateProcess и CreateThread ;) |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: -1 Всего: 3 |
А чего не понятного, елси программа не игрушка, а аля система управления, то появление в системе процесса, загружающего систему приведет к нежелательным последствиям. Вообще-то всем спасибо, я разобрался и повышаю приоритет когда вижу, что не хватает проц. ресурсов -------------------- я не гольфист - я хоккеист |
|||
|
||||
| mo3art |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 29.9.2005 Где: пло не та 3 емля Репутация: нет Всего: нет |
- непонятно почему твоя программа при повышении приоритета загружает систему только это... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |