ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Разработка многопоточных программ в среде DelphiЛабораторная работа № 6 Работа с потоками в Delphi Разработка многопоточных программ в среде Delphi Среда разработки Delphi представляет программисту полный доступ к функциям API Win32. Таким образом, для создания потока и управления им могут быть использованы рассмотренные ранее функции. Однако использование API функций не единственный способ разработки многопоточных приложений в данной среде. В Delphi включен специальный класс, инкапсулирующий и упрощающий программный интерфейс работы с потоками. При использовании данного класса, от программиста не требуется знание API функций работы с потоками, меньше вероятность допустить ошибку при передаче параметров, упрощается механизм синхронизации потоков и разделения данных между ними. Для решения конкретной задачи программисту не требуется вдаваться в тонкости механизмов, предлагаемых операционной системой, т.к. базовая функциональность уже реализовано. Для создания потока необходимо лишь добавить в программу новый класс, наследующий от класса TThread, и перекрыть (включить свою реализацию) виртуальный метод Execute. Каждому новому потоку приложения будет соответствовать объект разработанного класса, управление этим потоком будет осуществляться через вызов свойств и методов объекта. Очевидно, данный способ значительно проще работы с API функциями. Также использование класса TThread - это гарантия безопасной работы с библиотекой визуальных компонентов VCL (). Без использования класса TThread во время вызовов VCL могут возникнуть конфликты обращения различнык потоков к одним и тем же элементам управления. Без использования TThread такая ситуация требует специальной синхронизации. Класс TThread Рассмотрим основные свойства и методы класса TThread, благодаря механизму наследования функциональность данного класса будет доступна в производном от этого типа классе. Свойства и методы TThread предоставляют основные функции по управлению потоком как объектом операционной системы. Метод Execute procedure Execute; virtual; abstract; В данный метод включается программный код, который должен исполняться потоком. Переопределяя метод Execute, программист закладывает в потоковый класс то, что будет выполняться при передаче управления потоку. Можно выделить два варианта выполнения метода Execute. Поток рассчитан на однократное выполнение каких-либо действий, в таком случае не требуется специального кода завершения внутри метода Execute. Выполнение потока прекратится после выполнения последнего оператора метода. В потоке будет выполняться цикл, и поток должен завершиться вместе с процессом, которому он принадлежит. Ниже представлен примерный шаблон метода Execute для такого потока. procedure TMyThread.Execute; begin repeat DoSomething; Until CancelCondition or Terminated; end; Логическое выражение CancelCondition - это условие завершения потока, которое устанавливает программист. Например, это могут быть исчерпание данных, окончание вычислений, наступление того или иного события. Свойство Terminated класса TThread сообщает о преждевременном завершении потока. Данное свойство может быть установлено как программистом (например, в процессе выполнения программы произошла ошибка), так и системой (завершается родительский процесс), как изнутри класса потока, так и извне. Не нашли, что искали? Воспользуйтесь поиском:
|