Фоновые
процедуры, или способ обойтись без потоков
Здесь мы рассмотрим возможность для организации фоновых действий
(job) внутри однопоточной программы с сохранением реакции этого потока на события от мыши и клавиатуры.
Еще не столь давно программисты пытались эмулировать потоки, запуская процедуры внутри цикла обработки сообщений Windows. Цикл обработки сообщений
(или цикл ожидания) — это особый фрагмент кода в программе, управляемой событиями. Он исполняется тогда, когда программа находит в очереди события, которые нужно обработать; если таковых нет, программа может выполнить в это время "фоновую процедуру". Такой способ имитации потоков весьма сложен, т. к. вынуждает программиста, во-первых, сохранять состояние фоновой процедуры между ее вызовами, а во-вторых, определять момент, когда она вернет управление обработчику событий. Если такая процедура выполняется долго, то у пользователя может сложиться впечатление, что приложение
перестало реагировать на внешние события. Использование потоков снимает проблему переключения контекста, теперь контекст (стек и регистры) сохраняет операционная система.
В Delphi возможность создать фоновую процедуру реализована через событие
Onldle .объекта Application!
type TIdleEvent = procedure (Sender: TObject;
var Done: Boolean)
of object;
property Onldle: TIdleEvent;
Обработчик этого события вы можете написать, поместив на форму компонент
TApplicationEvents со
страницы Additional Палитры
компонентов.
Чтобы сделать в фоновом режиме какую-то работу, следует разбить ее на кванты и выполнять по одному кванту каждый вызов
Onldle — иначе приложение будет плохо реагировать на внешние воздействия.
Знаете ли Вы, что "тёмная материя" - такая же фикция, как черная кошка в темной комнате. Это не физическая реальность, но фокус, подмена. Реально идет речь о том, что релятивистские формулы не соответствуют астрономическим наблюдениям, давая на порядок и более меньшую массу и меньшую энергию. Отсюда сделан фокуснический вывод, что есть "темная материя" и "темная энергия", но не вывод, что релятивистские формулы не соответствуют реалиям. Подробнее читайте в FAQ по эфирной физике.