Меню
Главная
Авторизация/Регистрация
 
Главная arrow Технические arrow Информационные технологии arrow
Теория многозадачности и многопоточности

Реализация многопоточности в Delphi

Стандартный мастер модулей в Delphi автоматически создает модуль содержащий класс потока с указанным именем. Весь код который необходимо вынести в отдельный поток помещается в метод класса Execute.

Базовый класс для создания потока пользователя – TThread

TThread = class

protected

procedure DoTerminate; virtual;

procedure Execute; virtual;

procedure Synchronize(Method: TThreadMethod);

property ReturnValue: Integer;

property Terminated: Boolean;

public

constructor Create(CreateSuspended: Boolean);

procedure Resume;

procedure Suspend;

procedure Terminate;

function WaitFor: LongWord;

property FreeOnTerminate: Boolean;

property Handle: Thandle;

property Priority: TthreadPriority;

property Suspended: Boolean;

property ThreadID: Thandle;

property OnTerminate: TnotifyEvent;

end;

Процесс, породивший поток может гибко управлять его состоянием: приоритетом Priority; приостановить и продолжить его исполнения, а так же досрочно завершить выполнение потока.

Для вызова методов VCL необходимо синхронизировать дочерний поток с главным. Для этого служит процедура Synchronize(Method:TThreadMethod);

unit Unit1;

interface

uses

Classes;

type

TSamples = class(TThread)

private

protected

procedure Execute; override;

end;

implementation

{ Подсказка Delphi по поводу Synchronize.

Important: Methods and properties of objects in VCL can only be used in a

method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure Samples.UpdateCaption;

begin

Form1.Caption := 'Updated in a thread';

end; }

{ Samples }

procedure TSamples.Execute;

begin

{ Здесь должен быть размещен код потока }

end;

end.

 
Оригинал текста доступен для загрузки на странице содержания
< Пред   СОДЕРЖАНИЕ   След >
 

СКАЧАТЬ ОРИГИНАЛ
Теория многозадачности и многопоточности