Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приоритет программы 
:(
    Опции темы
profesiachuvak
  Дата 16.12.2009, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: нет
Всего: 4



Здравствуйте друзья,  начну с кода:

var 
Код


ProcessID: DWORD;
ProcessHandle: THandle;
ThreadHandle: THandle;

begin

ProcessID := GetCurrentProcessID;
  ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION,
    false, ProcessID);

SetPriorityClass(ProcessHandle, HIGH_PRIORITY_CLASS);
ThreadHandle := GetCurrentThread;
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_TIME_CRITICAL);


Если в  SetPriorityClass указать HIGH_PRIORITY_CLASS , то загрузка процессора при выполнении программы 100%. Мне нужен максимально высокий приоритет моей программы, но не до такой степени.
Вопрос в следующем: 
1. Какой же класс приоритета будет оптимальным? 
2. Какие ещё классы приоритета существуют? (есть ли числовой эквивалент  HIGH_PRIORITY_CLASS и др.) 
3.Грамотно ли вообще реализован приоритет в моём коде?
4.Нужно ли устанавливать приоритет потока в данном случае?

Это сообщение отредактировал(а) profesiachuvak - 16.12.2009, 13:25


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
Демо
Дата 16.12.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Сразу же несколько вопросов.

Цитата(profesiachuvak @  16.12.2009,  13:24 Найти цитируемый пост)
Мне нужен максимально высокий приоритет моей программы


Для чего?


Цитата(profesiachuvak @  16.12.2009,  13:24 Найти цитируемый пост)
Грамотно ли вообще реализован приоритет в моём коде?

Опять же - чего добиться хочешь?
С точки зрения синтаксиса - всё грамотно.


Цитата(profesiachuvak @  16.12.2009,  13:24 Найти цитируемый пост)
Нужно ли устанавливать приоритет потока в данном случае?

В каком?

Ты задаёшь вопросы, но не говоришь для чего это нужно.


--------------------
    
PM MAIL ICQ Skype   Вверх
profesiachuvak
  Дата 18.12.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: нет
Всего: 4



Цитата(Демо @ 16.12.2009,  15:11)
Ты задаёшь вопросы, но не говоришь для чего это нужно.

Прошу прощения, косяк с интернетом был.

Отвечаю на ваши вопросы : в моей программе реализован сверхточный таймер (до 10 мкс), считает он выполнение процедуры. Проблема в том что с обычным приоритетом возникает погрешность в вычислении точного времени. То есть необходимая точность обеспечивается только с высоким приоритетом. 
Для сравнении : 
Приоритет который я указал в коде : время выполнения  8 +/- 2 мкс
Без указания приоритета : время выполнения 8 +/- 9 мкс (приблизительно, но разбежка ощутима)

Вот я и хотел бы узнать что именно мне надо. Вопросы остаются те же.



--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
bems
Дата 18.12.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



стопроцентная загрузка будет при любом приоритете, если программе есть что делать и она не простаивает. Приоритет влияет только на то, кто получит время при конкуренции.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
~FoX~
Дата 18.12.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



profesiachuvak, Что бы снизить погрешность REALTIME_PRIORITY_CLASS, точность что надо... В остальном:
1. На разных машинах будут разные результаты в том числе и погрешность.
2. Более того при разных запущенных приложениях показатели будут разными.
Из 1 и 2 => Выбрать подходящий можно только империческим путем...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
profesiachuvak
Дата 19.12.2009, 14:40 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: нет
Всего: 4



Цитата(~FoX~ @  18.12.2009,  22:39 Найти цитируемый пост)
1. На разных машинах будут разные результаты в том числе и погрешность.
2. Более того при разных запущенных приложениях показатели будут разными.
Из 1 и 2 => Выбрать подходящий можно только империческим путем... 



~FoX~ , Вы говорите простые истины. Если на конфигурацию компьютера я повлиять не могу, то на победу в конкуренции между приложениями я могу надеяться. 

Цитата(~FoX~ @  18.12.2009,  22:39 Найти цитируемый пост)
Что бы снизить погрешность REALTIME_PRIORITY_CLASS


За это спасибо, сейчас попробую.


Цитата(bems @  18.12.2009,  18:45 Найти цитируемый пост)
стопроцентная загрузка будет при любом приоритете, если программе есть что делать и она не простаивает. Приоритет влияет только на то, кто получит время при конкуренции. 


bems, Первое предложение не понятно. Вы хотите сказать, что при выполнении программы ресурс процессора полностью отдаётся только ей? Вы не правы что при любом приоритете загрузка программы одинаковая, проверьте это не так.
 smile 


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
bems
Дата 21.12.2009, 00:09 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(profesiachuvak @  19.12.2009,  14:40 Найти цитируемый пост)
Вы хотите сказать, что при выполнении программы ресурс процессора полностью отдаётся только ей?
Нет, не хочу. Приоритет прямо влияет на то кому достанется больше процессора. Но даже если у вас самый низкий приоритет, и вам есть что делать загрузка процессора (предположим для простоты что он один в системе) будет 100%

Цитата(profesiachuvak @  19.12.2009,  14:40 Найти цитируемый пост)
Вы не правы что при любом приоритете загрузка программы одинаковая
Прав. Вторая цитата говорит не совсем о том же о чем первая.

Предположим что у тебя самый низкий приоритет. Когда нет конкурирующих потоков, то даже с этим приоритетом ты получишь процессорное время, и загрузка будет 100% до тех пор, пока не появится поток с более высоким. Когда управление получает этот поток, то ты голодаешь, да, но процессор-то не простаивает. Он выполняет этот высокоприоритетный поток. Загрузка остается высокой. Когда ему больше нечего делать, то снова процессор занят тобой. Он будет простаивать тольео там, где все потоки находятся в ожидании. Поскольку речь о продолжительной фоновой работе, то ты всегда готов действовать, занчит загрузка 100%



--------------------
Обижено школьников: 8
PM MAIL   Вверх
profesiachuvak
Дата 21.12.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: нет
Всего: 4



bems, Не буду с Вами спорить, я не сведущ в физике процесса загрузки процессора. Просто то что Вы писали в первом своём сообщении, скорее была просто отписка, поэтому это вызвало у меня негодование и непонимание. А вообще мы отошли от темы. 

Вопросы остались открытыми.


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
Демо
Дата 21.12.2009, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(profesiachuvak @  18.12.2009,  18:16 Найти цитируемый пост)
 считает он выполнение процедуры


Что конкретно считает? Если вычисляет, какое время выполняется некий код, то для этого не нужно ни таймеры, ни приоритеты изменять...


--------------------
    
PM MAIL ICQ Skype   Вверх
profesiachuvak
Дата 21.12.2009, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: нет
Всего: 4



Цитата(Демо @  21.12.2009,  01:37 Найти цитируемый пост)
Что конкретно считает? Если вычисляет, какое время выполняется некий код, то для этого не нужно ни таймеры, ни приоритеты изменять... 


Демо, Ваше предложение как подчитать с какой частотой вкл\выкл контакт на LPT порту ? Именно эту процедуру я и замеряю.


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
dvamaster
Дата 22.12.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 3
Всего: 10



чтоб не было 100% загрузки надо модифицировать поток обоспечивающий таймер

есть Multimedia Timers


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.