![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Процедура - прерывание... (Как в ДОСе) [D7, Win95/98, WinME, Win2k, WinXP]
microprogs © (2005-01-06 16:59:00)HI.
Есть некоторая прога, в которой куча процедур делают разные вычисления...
Как написать процедуру, которая будет по какому-то событию прерывать выполнение всей программы, выполнять вычисления, и снова восстанавливать выполнение программы...
Например через каждые 18мс, но надо написать без использования Таймера, и потоков...
В досе я делал это через программирование прерываний...
А как сделать это на Дельфи без использования Таймера и потоков...
Это надо, чтобы данные с COM-порта обрабатывались моей прогой всегда, даже если какие-то процедуры очень дольго или бесконечно что-то делают, они должно тормозить, и дать выполнение процедуре-прерыванию! А потом опять возобновить работу...
Набережных С. (2005-01-07 12:43:00) [1]>microprogs
Только перед новым годом закончил:
Каждые 12 МСек на скорости 19200 принимает от устройства 12 байт, слегка обрабатывает и по результату некоторые пакеты сохраняет в файл. Все в одном потоке, работа с портом асинхронная. На Р2 450 МГц под W2Pro загрузка процессора 2..5% при самой частой записи в файл. На участках, когда записи не производится, загрузка вообще около нуля - диск медленный, с PIO. В твоем случае, вероятно, для обмена с портом следует использовать отдельный поток с повышенным приоритетом.
>>А чем же тебя потоки не устраивают???
>А тем, что они иногда работают с большими задержками на старых тачках...
Дело, видимо, в ОСи. Не следует использовать W9x. Как помнится, там на переключение тратится очень много времени. Да и многозадачность там не вполне вытесняющая:) На NT контексты переключаются многократно шустрее.
microprogs (2005-01-07 10:16:00) [2]>А чем же тебя потоки не устраивают???
А тем, что они иногда работают с большими задержками на старых тачках...
А проге надо через каждые 0~18мс получать данные с COM-порта!
А прога написанная под ДОС, через прерывание, работает без проблем на 486(ниже не тестировали, но тоже должна работать)...
KSergey (2005-01-07 08:29:00) [3]На сколько понимаю, такого вот подхода (как в ДОС) в Win нет в принципе. Единственное где это вероятно возможно - драйвер. Впрочем, возможно он вам и нужен.
GanibalLector (2005-01-06 18:45:00) [4]А чем же тебя потоки не устраивают???
> выполнение процедуре-прерыванию
Юморист,однако ;)