Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как запустить программу с высоким приоритетом?


sdw_syscoder ©   (2004-08-09 20:02:00) 

Как запустить программу с высоким приоритетом?


sdw_syscoder   (2004-08-10 08:14:00) [1]

Доброе утро!
В принципе проблема возникает ни в самом коде реализации ввода/вывода в порт, а в процедуре(вызывается через Synchronize), где происходит копирование из буфера порта в массив, а затем из массива копируется методом Assign(на этой строчке и возникает еxception), в другой массив. Ну это ладно, я уже грузил здесь народ по этому поводу. Попробую исправить сам.


Ihor Osov'yak   (2004-08-10 03:24:00) [2]

2 GanibalLector ©   (10.08.04 02:12) [18]

Давно это было. Оле тогда еще и не пахло, была только книжечка с описанием протокола. Да и исходники у заказчика остались - мое участие в том проекте было эпизодичным и я не считтал нужным хранить копию исходников у себя.
Но если мне память не изменяет - не исключаю, что в этом проекте использовался CiaComPort - так что вряд-ли что интересно там можно увидеть. А может и не CiaComPort - но действительно, у меня не осталось воспоминаний, что там были какие-то проблемы.. И в остальных проектах, где шла работа с портами - тоже не было особых проблем.. Во всяком случае с поднятием приоритета. Да и собственно какие там проблемы могут быть - ведь драйвер порта использует свои буффера, и приоритеты прикладных процессов драйвер в общем то до фени.. А если для ожидания прихода символа или завершения передачи использовать SetCommMask + WaitCommEvent то сторожевой поток в основном в режиме простоя будет - следовательно ему как бы приоритеты тоже не очень то существенный.. А основной поток тоже в основном будет находиться в режиме ожидания нотификационного сообщения  от сторожевого потока - то есть как бы ему высокий приоритет особо и не нужен.. А среагирует основной поток на нотификацию с некоторым опозданием - так собственно для этого случая буфера портов и предназначены.. Чтобы принять несколько символов от устройчтва, пока прикладное приложение со своей нотификацией и масками разбирается.
Естественно, весь вывод и ввод в ассихронном режиме. Можно, конечно, и синхронно, заюзав один дополнительный рабочий поток, но не знаю.. Тогда наверное можно без событий, но может возникнуть ситуация с нехваткой времени на подготовку и обработку данных. Ведь основное время поток будет умирать на операциях ввода-вывода. Конечно, можно подготовку-обработку вынести еще в один поток, но очень уж муторной будет синхронизация всего этого дела. Ассинхронный режим ввода вывода с использованием WaitCommEvent намного естественнее выглядит, да и проще в реализации.. И никаких повышенных приоритетов не требует..

А вот за инфу об оле спасибо - не исключаю, что этот дрефний софт придется модифицировать в обозримом будущем..


GanibalLector   (2004-08-10 02:12:00) [3]

>Нет - так как одно из условий выполнения проекта - нераспространение исходных кодов.
Ну это Вы зря.Почему???Обьясню:
-существуют OLE для работы с этим аппаратом(поставляется разработчиком) и оно FREE
-вышло уже более 4 версий этого аппарата и естественно протоколы у всех разные
-да и вообще,я хотел посмотреть на то как Вы все это делали в потоке и почему не нужно поднимать приоритет.

Ну,не хотите ...как хотите.Жадный Вы какой-то.


Ihor Osov'yak   (2004-08-10 02:02:00) [4]

Да, Мария. Ошибся, давно это было, года четыре.
Нет - так как одно из условий выполнения проекта - нераспространение исходных кодов.


GanibalLector   (2004-08-10 01:57:00) [5]

2 Ihor Osov'yak ©  
Спасибо за   "MTTTY sample application" почитаю на досуге.

Кассовый реестратор "Мрия"
Таких нет и небыло.Может "Мария"???

А почему НЕТ???Вы стесняетесь???


Ihor Osov'yak   (2004-08-10 01:51:00) [6]

2 [13]
> Вы удивитесь,но все функции вынесены в поток
ну, это еще не достаточное условие
> Более того,писалось все на АПИ...как раз  "Serial Communications Functions".
более того, и этот факт дополнительно еще не стает достаточним условием..

Кстати, поищите CiaComport авторства Mestdagh Wilfried - вещь, вполне корректно работающая для большинства случаев, есть, правда, мелкие замечания п реализации, но я смотрел версию двух-или трехгодичной давности, сейчас, наверное, есть более новые.

> А вот что такое  "MTTTY sample application" я не понял.

http://msdn.microsoft.com/library/en-us/dnfiles/html/msdn_serial.asp
и в частности http://download.microsoft.com/download/4/7/2/47291d3a-b5b5-4447-8182-4b72b505a603/4918.exe

Семпл от майкрософта, демонстрирующий разные методы работы с ком-портом.
Очень поучительный семпл.
Также можно использовать как инструментарий для тестирования устройств, подсоединенных к ком-порту.

> хватит придираться.

Не давайте повода.

> Мастер как ни как

иногда бываю, моментами вспоминаю..

2 [14]
Кассовый реестратор "Мрия". Нельзя.


GanibalLector   (2004-08-10 01:31:00) [7]

. И с ком-портом вообще, и с кассовым аппаратом в частности
А с какими аппаратами,если не секрет???И можно ли взглянуть на это творчество???


GanibalLector   (2004-08-10 01:29:00) [8]

Может потому, что я слышал о потоках, об ассинхронном вводе/выводе, немного в мсдн посмотрел раздел "Serial Communications Functions", всякие там SetCommMask, WaitCommEvent.
Вы удивитесь,но все функции вынесены в поток . Более того,писалось все на АПИ...как раз  "Serial Communications Functions".

А вот что такое  "MTTTY sample application" я не понял.

Да, еще. Прог я не пишу. А вот программы иногда случается.
Ну да ладно...хватит придираться.Вы же в почете.Мастер как ни как.


Ihor Osov'yak   (2004-08-10 01:18:00) [9]

2 [11] GanibalLector ©   (10.08.04 00:51)

Вам покажется странным, но пробовал. И с ком-портом вообще, и с кассовым аппаратом в частности. Потребности в химии с приоритетами не возникало. И не особенно интересовало, что там пользователь в фоне запускал. Может потому, что я слышал о потоках, об ассинхронном вводе/выводе, немного в мсдн посмотрел раздел "Serial Communications Functions", всякие там SetCommMask, WaitCommEvent. И не влом было глянуть на "MTTTY sample application"... И не только посмотрел, а и немного использовал из того, что увидел..

Да, еще. Прог я не пишу. А вот программы иногда случается.


GanibalLector   (2004-08-10 00:51:00) [10]

Значит топорно работаете с ком портом
Ничего подобного.Вы сами то пробовали???Вот ,например,писал я одну прогу для программирования товаров кассового аппарата.Сам процесс занимает от 10сек до 5 мин. и откуда я знаю,что будет делать пользователь все это время???Может ему захочется посмотреть фильм или послушать музыку.И без повышения приоритета ИНОГДА бывает сбой,а с повышением их не бывает вообще.
И плюс [10]


sdw_syscoder   (2004-08-10 00:11:00) [11]

> GanibalLector ©   (09.08.04 23:15) [7]

Во-во, на счёт порта это ты правильно речь толкнул. Речь даже ни о фильмах, а как только диспетчер памяти запускаешь во время чтения с порта или WinAMP врубает следующий трек, так и всё, кранты, прогу клинит (хорошо не виснет) и внешний девайс кричит об ошибке. Вот так! Поэтому когда работаешь с портом, приходиться ждать пока програ не отработает.

> Ihor Osov'yak ©   (09.08.04 23:25) [9]

ДА! Работаем в поте лица!
А на от прерывания кванта времени, это даже и приоритеты могут не спасти.


Ihor Osov'yak   (2004-08-09 23:25:00) [12]

2 [7] GanibalLector ©   (09.08.04 23:15)

Значит топорно работаете с ком портом.

2 [6] GuAV ©   (09.08.04 23:12)

Потому что это решение не гарантирует получение достаточных ресурсов процессора и не гарантирует, что квант времени не будет прерываться другими процессами или системой. Иногда может и есть смысл поднимать приоритет на короткие промежутки времени, если есть уверенность что ресурсов процессора все же хватит  в данный момент времени. Здесь ключевое слово "может".


GuAV   (2004-08-09 23:20:00) [13]


> запускаешь посмотреть пару фильмов.

как, что, одновременно? хм...


GanibalLector   (2004-08-09 23:15:00) [14]

> имхо, безполезное это занятие..
Очень даже полезное,когда например работаешь с ком-портом и одновременно запускаешь посмотреть пару фильмов.


GuAV   (2004-08-09 23:12:00) [15]


> имхо, безполезное это занятие..

Почему (никогда такое не делал, но всё же) ?


Ihor Osov'yak   (2004-08-09 23:07:00) [16]

имхо, безполезное это занятие..


Mim1   (2004-08-09 21:19:00) [17]

   CreateProcess(nil,'notepad',nil,nil,false, HIGH_PRIORITY_CLASS,nil,nil,si,pi);


Мастер   (2004-08-09 20:35:00) [18]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1091280137&n=5


sdw_syscoder   (2004-08-09 20:21:00) [19]

Чё та я не врубаюсь, примерчик можно?


Мастер   (2004-08-09 20:06:00) [20]

SetThreadPriority ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо