Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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 сообщает о преждевременном завершении потока. Данное свойство может быть установлено как программистом (например, в процессе выполнения программы произошла ошибка), так и системой (завершается родительский процесс), как изнутри класса потока, так и извне.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных