Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизКак запустить программу с высоким приоритетом? Найти похожие ветки
← →
sdw_syscoder (2004-08-09 20:02) [0]Как запустить программу с высоким приоритетом?
← →
Мастер © (2004-08-09 20:06) [1]SetThreadPriority ?
← →
sdw_syscoder (2004-08-09 20:21) [2]Чё та я не врубаюсь, примерчик можно?
← →
Мастер © (2004-08-09 20:35) [3]http://delphimaster.net/view/4-1091280137/
← →
Mim1 © (2004-08-09 21:19) [4]
CreateProcess(nil,"notepad",nil,nil,false,HIGH_PRIORITY_CLASS,nil,nil,si,pi);
← →
Ihor Osov'yak © (2004-08-09 23:07) [5]имхо, безполезное это занятие..
← →
GuAV © (2004-08-09 23:12) [6]
> имхо, безполезное это занятие..
Почему (никогда такое не делал, но всё же) ?
← →
GanibalLector © (2004-08-09 23:15) [7]> имхо, безполезное это занятие..
Очень даже полезное,когда например работаешь с ком-портом и одновременно запускаешь посмотреть пару фильмов.
← →
GuAV © (2004-08-09 23:20) [8]
> запускаешь посмотреть пару фильмов.
как, что, одновременно? хм...
← →
Ihor Osov'yak © (2004-08-09 23:25) [9]2 [7] GanibalLector © (09.08.04 23:15)
Значит топорно работаете с ком портом.
2 [6] GuAV © (09.08.04 23:12)
Потому что это решение не гарантирует получение достаточных ресурсов процессора и не гарантирует, что квант времени не будет прерываться другими процессами или системой. Иногда может и есть смысл поднимать приоритет на короткие промежутки времени, если есть уверенность что ресурсов процессора все же хватит в данный момент времени. Здесь ключевое слово "может".
← →
sdw_syscoder (2004-08-10 00:11) [10]> GanibalLector © (09.08.04 23:15) [7]
Во-во, на счёт порта это ты правильно речь толкнул. Речь даже ни о фильмах, а как только диспетчер памяти запускаешь во время чтения с порта или WinAMP врубает следующий трек, так и всё, кранты, прогу клинит (хорошо не виснет) и внешний девайс кричит об ошибке. Вот так! Поэтому когда работаешь с портом, приходиться ждать пока програ не отработает.
> Ihor Osov"yak © (09.08.04 23:25) [9]
ДА! Работаем в поте лица!
А на от прерывания кванта времени, это даже и приоритеты могут не спасти.
← →
GanibalLector © (2004-08-10 00:51) [11]Значит топорно работаете с ком портом
Ничего подобного.Вы сами то пробовали???Вот ,например,писал я одну прогу для программирования товаров кассового аппарата.Сам процесс занимает от 10сек до 5 мин. и откуда я знаю,что будет делать пользователь все это время???Может ему захочется посмотреть фильм или послушать музыку.И без повышения приоритета ИНОГДА бывает сбой,а с повышением их не бывает вообще.
И плюс [10]
← →
Ihor Osov'yak © (2004-08-10 01:18) [12]2 [11] GanibalLector © (10.08.04 00:51)
Вам покажется странным, но пробовал. И с ком-портом вообще, и с кассовым аппаратом в частности. Потребности в химии с приоритетами не возникало. И не особенно интересовало, что там пользователь в фоне запускал. Может потому, что я слышал о потоках, об ассинхронном вводе/выводе, немного в мсдн посмотрел раздел "Serial Communications Functions", всякие там SetCommMask, WaitCommEvent. И не влом было глянуть на "MTTTY sample application"... И не только посмотрел, а и немного использовал из того, что увидел..
Да, еще. Прог я не пишу. А вот программы иногда случается.
← →
GanibalLector © (2004-08-10 01:29) [13]Может потому, что я слышал о потоках, об ассинхронном вводе/выводе, немного в мсдн посмотрел раздел "Serial Communications Functions", всякие там SetCommMask, WaitCommEvent.
Вы удивитесь,но все функции вынесены в поток . Более того,писалось все на АПИ...как раз "Serial Communications Functions".
А вот что такое "MTTTY sample application" я не понял.
Да, еще. Прог я не пишу. А вот программы иногда случается.
Ну да ладно...хватит придираться.Вы же в почете.Мастер как ни как.
← →
GanibalLector © (2004-08-10 01:31) [14]. И с ком-портом вообще, и с кассовым аппаратом в частности
А с какими аппаратами,если не секрет???И можно ли взглянуть на это творчество???
← →
Ihor Osov'yak © (2004-08-10 01:51) [15]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:57) [16]2 Ihor Osov"yak ©
Спасибо за "MTTTY sample application" почитаю на досуге.
Кассовый реестратор "Мрия"
Таких нет и небыло.Может "Мария"???
А почему НЕТ???Вы стесняетесь???
← →
Ihor Osov'yak © (2004-08-10 02:02) [17]Да, Мария. Ошибся, давно это было, года четыре.
Нет - так как одно из условий выполнения проекта - нераспространение исходных кодов.
← →
GanibalLector © (2004-08-10 02:12) [18]>Нет - так как одно из условий выполнения проекта - нераспространение исходных кодов.
Ну это Вы зря.Почему???Обьясню:
-существуют OLE для работы с этим аппаратом(поставляется разработчиком) и оно FREE
-вышло уже более 4 версий этого аппарата и естественно протоколы у всех разные
-да и вообще,я хотел посмотреть на то как Вы все это делали в потоке и почему не нужно поднимать приоритет.
Ну,не хотите ...как хотите.Жадный Вы какой-то.
← →
Ihor Osov'yak © (2004-08-10 03:24) [19]2 GanibalLector © (10.08.04 02:12) [18]
Давно это было. Оле тогда еще и не пахло, была только книжечка с описанием протокола. Да и исходники у заказчика остались - мое участие в том проекте было эпизодичным и я не считтал нужным хранить копию исходников у себя.
Но если мне память не изменяет - не исключаю, что в этом проекте использовался CiaComPort - так что вряд-ли что интересно там можно увидеть. А может и не CiaComPort - но действительно, у меня не осталось воспоминаний, что там были какие-то проблемы.. И в остальных проектах, где шла работа с портами - тоже не было особых проблем.. Во всяком случае с поднятием приоритета. Да и собственно какие там проблемы могут быть - ведь драйвер порта использует свои буффера, и приоритеты прикладных процессов драйвер в общем то до фени.. А если для ожидания прихода символа или завершения передачи использовать SetCommMask + WaitCommEvent то сторожевой поток в основном в режиме простоя будет - следовательно ему как бы приоритеты тоже не очень то существенный.. А основной поток тоже в основном будет находиться в режиме ожидания нотификационного сообщения от сторожевого потока - то есть как бы ему высокий приоритет особо и не нужен.. А среагирует основной поток на нотификацию с некоторым опозданием - так собственно для этого случая буфера портов и предназначены.. Чтобы принять несколько символов от устройчтва, пока прикладное приложение со своей нотификацией и масками разбирается.
Естественно, весь вывод и ввод в ассихронном режиме. Можно, конечно, и синхронно, заюзав один дополнительный рабочий поток, но не знаю.. Тогда наверное можно без событий, но может возникнуть ситуация с нехваткой времени на подготовку и обработку данных. Ведь основное время поток будет умирать на операциях ввода-вывода. Конечно, можно подготовку-обработку вынести еще в один поток, но очень уж муторной будет синхронизация всего этого дела. Ассинхронный режим ввода вывода с использованием WaitCommEvent намного естественнее выглядит, да и проще в реализации.. И никаких повышенных приоритетов не требует..
А вот за инфу об оле спасибо - не исключаю, что этот дрефний софт придется модифицировать в обозримом будущем..
← →
sdw_syscoder (2004-08-10 08:14) [20]Доброе утро!
В принципе проблема возникает ни в самом коде реализации ввода/вывода в порт, а в процедуре(вызывается через Synchronize), где происходит копирование из буфера порта в массив, а затем из массива копируется методом Assign(на этой строчке и возникает еxception), в другой массив. Ну это ладно, я уже грузил здесь народ по этому поводу. Попробую исправить сам.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.033 c