![]() |
в программе я провожу статические расчеты и нужно выполнять множество математических действий, которые компьютер порой не очень то переваривает, так вот я хотел узнать как в Delphi5 можно установить приоритет программы таким образом, чтобы она использовала все ресурсы компьютера... чтобы максимально минимизировать время работы программы, то есть расчетов
|
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); - это устанавливается максимально возможный приоритет процесса в целом,
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); - это приоритет потока. Как ни странно, главное при установке приоритетов - не переборщить, ведь виндоусу себя тоже считать надо, и если своему потоку (тем более интенсивно работающему) выставить максимальные приоритеты, то виндоус практически зависнет. |
Kamiur
Цитата:
|
Хм... Да так прямо и пользоваться.
Ну например... var PriorityClass, Priority: Integer; ... PriorityClass := GetPriorityClass(GetCurrentProcess); Priority := GetThreadPriority(GetCurrentThread); // Сохранение приоритетов по умолчанию, чтобы можно было потом восстановить SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); //Установка приоритета текущего процесса SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL); //Установка приоритета текущего потока ... Ваши вычисления ... SetThreadPriority(GetCurrentThread, Priority); SetPriorityClass(GetCurrentProcess, PriorityClass); // Восстановление приоритетов по умолчанию Ну а насчет справки - это вы зря: раз уж вы взялись что-то программировать, то английский, imho, это первое, что надо освоить... Добавлено: Да, и еще... Если операционка NT (2000, XP), то у пользователя, запускающего такую программу, конечно, должны быть соответствующие права (называется, по-моему, "Профилирование одного процесса"). |
Roman Go
Kamiur Привилегия увеличения квот должна быть. Если ее нет - приоритет будет только высокий, но не реального времени. |
vasketsov Я лично из твоих слов как обычно ничего не понял, может разъяснишь по подробнее, мне что не следует и браться за эту штуку или нужно таки что-нибудь другое использовать...?
|
Ну уж если тут действительно все так не просто, то пишите под ДОС (и на фортране), там проблем с многозадачностью нет в принципе.
|
Roman Go
Да забей. Бери класс приоритета как высокий, реалтайм не нужен, думается. |
Я значит что делал: в предложенный код Kamiurа вставлял вот такой цикл
Код:
Код:
label1.caption:='в процессе'; заодно вопрос, почему я в label1 не вижу в течении этих же самых 30 секунд в процессе и как мне сделать чтобы я его видел... странно как-то это все работает, не по порядку.. |
Roman Go
Цитата:
|
Время: 15:57. |
Время: 15:57.
© OSzone.net 2001-