Форум: "WinAPI";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];
ВнизУменьшение процессорного времени отводимого программе Найти похожие ветки
← →
fishca (2002-08-29 16:30) [0]Возможно ли из программы создавая процесс, сказать ОС что на него процессорного времени отводить скажем 50% и не более? Можно ли это сделать не изменяя приоритет процесса? И если можно наставьте на путь истинный!
← →
MBo (2002-08-29 16:36) [1]именно так - нельзя
приоритет процесса не задает жестко, сколько времени будет отдано процессу.
← →
fishca (2002-08-29 16:38) [2]
> именно так - нельзя
а вообще как то можно?
← →
MBo (2002-08-29 16:52) [3]нет. конкретное время (долю времени) отвести нельзя
← →
Игорь Шевченко (2002-08-29 16:54) [4]Можно использовать Job, начиная с Windows 2000. Там заказать ограничение процессорного времени
← →
Aleksey Pavlov (2002-08-29 17:17) [5]Действительно, можно использовать Job в Win2000, а для Win9x можно порекомендовать только "игру" с приоритетами, благо изменяются они с 0 до 32 (4 - IDLE, 28 - RealTime), так что возможна достаточно тонкая настройка.
Так же можно играть с так называемыми дельта-приоритетами (приоритетами потоков в контексте приоритета данного процесса), они изменяются от -15 до +15. При определённом упорстве можно добиться довольно точных показателей (на данном компьютере, при данной конфигурации и при данной загружености CPU).
← →
Набережных С. (2002-08-29 19:38) [6]
> fishca © (29.08.02 16:30)
Приостанавливать периодически(например, по таймеру) с помощью Sleep. Иначе активный поток захватит все имеющееся время.
← →
Diamond Cat (2002-08-29 22:48) [7]ага ,а sleep типа никак не обрабатывается?
← →
слон (2002-08-30 11:38) [8]2Игорь Шевченко&Aleksey Pavlov
Может я и ошибаюсь, но объекты job не ограничивают процессорное время выделяемое приложению, а просто прибивают приложение
если оно потребляет больше ресурсов чем указано при инициализации, будь то память или вычислительные ресурсы.
← →
Игорь Шевченко (2002-08-30 12:12) [9]слон (30.08.02 11:38)
Прибивают :-)
Но то, о чем просит автор - из серии "желать странного". Потому и пытаемся подсказать обходные пути.
С уважением,
← →
слон (2002-08-30 13:26) [10]Желание ограничит вычислительные ресурсы выделяемы приложению вполне понятно, но непонятно почему мелкомягкие не заложили эту возможность, и как всегда приходится искать пути через ж.
← →
Игорь Шевченко (2002-08-30 13:51) [11]слон (30.08.02 13:26)
Они заложили - Job придумали.
← →
Delphi 5.01 (2002-08-30 14:07) [12]Ne znau chto vam posovetovali no vot ia privedu primer spomoshi kotorogo mojno uvelichit procesornoi vrema videlaemoe programme!
Procedure Form1.Button1Click(Sender: TObject);
var
ProcessID : DWORD;
ProcessHandle : THandle;
ThreadHandle : THandle;
begin
ProcessID:=GetCurrentProcessID;
ProcessHandle:=OpenProcess(PROCESS_SET_INFORMATION,false,ProcessID) ;
SetPriorityClass(ProcessHandle,REALTIME_PRIORITY_CLASS);
ThreadHandle:=GetCurrentThread;
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_TIME_CRITICAL);
end;
naverneka budet THREAD_PRIORITY_TIME_MEDIUM, tak kak gde ia nashol etot primer tam govorilos chto mojno regulirovat preoritet, i nado bit storojnim s prioritetmami potomu chto mojet povisnut ili proa ili operacionka!
← →
Игорь Шевченко (2002-08-30 14:14) [13]Давить надо такие примеры! Клавишей Shift+Delete
← →
Delphi 5.01 (2002-08-30 14:18) [14]A pochemu????
Chem ne nravitsa!
Kstati esli krutoi otvet na vopros s JPEG to BMP!
Vot togda i pogovorim!
← →
Игорь Шевченко (2002-08-30 14:31) [15]Delphi 5.01 (30.08.02 14:18)
Потому что существуют еще системные процессы, которые в такой ситуации просто не будут работать. И твой процесс тоже, от неработы системных.
А крутых ответов у меня, извини, нету
← →
Delphi 5.01 (2002-08-30 14:32) [16]zaidi suda, ia vsegda idu suda esli na mastake ne mogut otvetit, tolko vot podojdat pridotsa, otvechaut naverneka, maksimum cherez den!
http://delphi.vitpc.com
Problema 100% reshima, glavnoie ne zdavatsa i iskat! Me mnogo raz govorili chto nevozmojno no ia na drugix forumax naxodil otveti, tak chto ne padai duxom, ishi, ishi, i naidosh nakonec!
← →
Delphi 5.01 (2002-08-30 14:35) [17]2Игорь Шевченко
Nas programerov malo, tak chto davai bez zacepok, forum na to chtob kajdi viskazival svoiu tochku zrenia, mojet i ne pravilnuiu no vpolne vozmojno komuto ona pomojet vspomnit chtoto, i on smojet otvetit na vopros.
Tak chto diskusia vsegda na polzu (chtoto vso ravno viuchish, mojet ne po teme!)
Tak chto ia protiv teba nichego ne imeu!
Kstati ti tochno budesh znat kak jpeg prevratit v bmp?
← →
Игорь Шевченко (2002-08-30 15:02) [18]Delphi 5.01 (30.08.02 14:35)
Ок, давай без зацепок :-)
Между прочим, по тому адресу http://delphi.vitpc.com
ты наверняка мог видеть и мои ответы :-)
Jpeg превратить в BMP можно, например, программой ACDSee (чем я превращал), можно попробовать, загрузив его в Image, сохранить полученный растр, как Bitmap, JPeg ведь в итоге, в растр превращается. Так как сам не пробовал, то могу порекомендовать поискать в инете.
По поводу приоритетов, я продолжаю говорить, что есть системные процессы (даже, не сколько процессы, сколько потоки системного процесса), которые работают хоть и с высоким приоритетом, но не с завышенным до максимума, в частности, подкачка страниц - это системный поток и еще много всяких полезных вещей. Рихтер это очень хорошо описывает в своей книжке "Windows для профессионалов"
← →
Delphi 5.01 (2002-08-30 15:14) [19]Soglasen s toboi na vse 100%.
Ia v Api slab, no staraus pomoch, ti pravilno govorish!
Jelau udachi v razreshenii etoi problemi!
Vremenno otluchaus nado igru dodelivat!
Do vstrechi!
← →
Набережных С. (2002-08-30 15:27) [20]
> Diamond Cat © (29.08.02 22:48)
> ага ,а sleep типа никак не обрабатывается?
Обрабатывается. Так-же, как и любой объект синхронизации, и выборка сообщения из очереди(только стоимость у всех разная). Но сути дела это не меняет. Конкретно Sleep извещает планировщик о том, что данному потоку не нужно выделять процессорное время в течении приблизительно N миллисекунд, что и требуется.
Ну а вычислять процент можно, например, с помощью GetThreadTimes.
Типа.
А извне можно использовать SuspendThread, что, в принципе, даст тот-же эффект.
> Игорь Шевченко © (30.08.02 13:51)
Я с Job еще не работал, но, насколько могу судить, они позволяют ограничить суммарное время работы приложения, при превышении которого процесс будет принудительно закрыт, а не процент занятия процессора. Я ошибаюсь?
← →
Игорь Шевченко (2002-08-30 16:00) [21]
> Я с Job еще не работал, но, насколько могу судить, они позволяют
> ограничить суммарное время работы приложения, при превышении
> которого процесс будет принудительно закрыт, а не процент
> занятия процессора. Я ошибаюсь?
Нет, не ошибаетесь. Но определение и установка процента занятия процессора - это "желание странного".
См. Игорь Шевченко © (30.08.02 12:12)
← →
Набережных С. (2002-08-30 16:12) [22]
> Нет, не ошибаетесь. Но определение и установка процента
> занятия процессора - это "желание странного".
> См. Игорь Шевченко © (30.08.02 12:12)
Ну это, пожалуй, еще слишком мягко сказано:)
← →
Diamond Cat (2002-08-31 00:19) [23]2 Набережных С. если не ошибаюсь то во время слипа форма, к примеру, перерисовывается, а что это значит, что прога так или иначе обрабатывает сообщения, из чего следует, процессорное время хавается (хотя возможно и не перерисовывается?)
← →
Набережных С. (2002-09-01 17:40) [24]
> Diamond Cat © (31.08.02 00:19)
Да не, ты, наверное, что-то спутал по запарке:)) Поток, вызвавший, например, Sleep(3000), примерно на 3 секунды исключается из очереди - какая уж тут перерисовка. К сожалению, точности здесь никакой. Все зависит от загрузки системы, от наличия потоков с более высоким приоритетом и т.п. Но, во всяком случае, 3 секунды остановки тебе гарантированны :)). Да это ведь легко проверить?
Другое дело, что сообщения в очередь поступают - но это именно другое дело, обработаны они будут по окончании заданного времени.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c