Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?
Поиск
L


Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 5762
Комментариев на сайте: 623
Новый юзер: Sevnday



Последние комментарии
c
N0E0O7 прокомментировал "Урок 1 - Инициализация OpenGL":
А у меня форма чёрная запускается
dimonsky прокомментировал "Урок 2 - Простые примитивы":
GetDC(handle) вместо canvas.handle, и убрать вызов FormResize. Тогда получается конфетка.



Мы в соцсетях
c
Delphi
Урок 53 - Потоки в Delphi, (часть 1/3)

  Потоки в Delphi выполняют функцию имитации псевдопараллельной работы приложения. Как известно, для организации многозадачности операционная система выделяет каждому приложению, выполняющемуся в настоящий момент, определённые кванты времени, длина и количество которых определяется его приоритетом. Поэтому объём работы, который приложение может выполнить, определяется тем, сколько таких квантов оно сможет получить в единицу времени. Для операционной системы каждый поток является самостоятельной задачей, которой выделяются кванты времени на общих основаниях. Поэтому приложение Delphi, умеющее создать несколько потоков, получит больше времени операционной системы, и соответственно сможет выполнить больший объём работы.

  Создать дополнительный поток в Delphi поможет объект TThread. Ввести объект TThread в программу можно двумя способами:

  1. С помощью Мастера
  2. Вручную
  1. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток. Выполним:

  File -> New -> Other...

В появившейся табличке выбора найдём TThread Object. Появится окошко, в верхнюю строку которого (Class Name) введём имя нашего будущего потока: MyThread. В результате будет создан модуль, содержащий заготовку кода, реализующего дополнительный поток Delphi:
unit Unit2; // Имя модуля, содержащего поток. При сохранении его можно изменить.

interface

uses
	Classes;

type
	MyThread = class(TThread) //MyThread - заданное нами имя потока.
	private
		{ Private declarations }
	protected
		procedure Execute; override;
	end;

	implementation

	{ Important: Methods and properties of objects in visual components can only be
	  used in a method called using Synchronize, for example,

	Synchronize(UpdateCaption);

	  and UpdateCaption could look like,

	procedure MyThread.UpdateCaption;
	begin
		Form1.Caption := 'Updated in a thread';
	end; }

	{ MyThread }

	procedure MyThread.Execute;
	begin                                                                                   
		{ Place thread code here }
	end;

end.

  2. В первом способе класс MyThread был создан мастером в дополнительном модуле. Второй способ состоит в том, что мы сами создаём такой класс в рамках одного из уже существующих модулей программы, например, в модуле Unit1:

unit Unit1; //Обычный модуль в котором описывается основная программа

interface

uses
	Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
	Dialogs, StdCtrls;

type
	TForm1 = class(TForm)
		Button1: TButton;
		procedure Button1Click(Sender: TObject);
	private
		{ Private declarations }
	public
		{ Public declarations }
	end;

	//Здесь необходимо описать класс TMyThread:
	TMyThread = class(TThread)
	private
		{ Private declarations }
	protected
		procedure Execute; override;
	end;

var
	Form1: TForm1;
	//Нужно ввести переменную класса TMyThread
	MyThread: TMyThread;

implementation

{$R *.dfm}

//Нужно создать процедуру Execute, уже описанную в классе TMyThread
procedure TMyThread.Execute;
begin
	Здесь описывается код, который будет выполняться в потоке
end;



  Если поток создаётся мастером, т.е. в другом модуле, то не забудьте в основном модуле описать переменную - экземпляр потока, как указано выше. Также, поскольку класс потока описан в другом модуле, имя этого модуля необходимо добавить в секцию uses. Теперь можно запускать поток, даже если в его процедуре Execute нет ни единого оператора.



   О том как использовать потоки в следующем уроке.

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 21 Июня 2013
Просмотров: 7207

Урок 52 - Исключительные ситуации Урок 54 - Потоки в Delphi, (часть 2/3)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Lammer [Новичок] Дата: 2013-09-14
у меня такой вопрос,чем легче создовать потоки мастером или же в ручную и еще один вопрос если я пользуюсь мастером то мне только остаеться написать (к примеру гет запрос)в процедуру procedure MyThread.Execute; и все???или еще что то нужно добавить




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-09-19
Да