В этой статье хотел бы рассказать немного о потоках. Потому, что дальше хочу показывать примеры с ними, а именно TIdhttp+TThread и многое другое. Так, что немного о потоках узнать будет полезно. Вообще потоки «вещь» классная и довольная интересная, а главное нужная. Многопоточные приложения сейчас повсюду. Вообще, что такое многопоточное приложение — это приложение, которое может выполнять много разных действий в фоновом режиме, не мешая работать основному потоку, то есть основному приложению. То есть Вам надо посчитать очень большое число, или перебрать в цикле 65000 чисел для этого Вам необходимо подождать пока это все дело выполнится, а если Вы перетащите окно за заголовок окна вашей программы, то числа перестанут считаться, это означает, что работает основной поток, а соответственно все остальные действия ждут пока он выполнится и продолжат работу. Так вот потоки и предназначены, чтобы одновременно выполнялись более 1 действия одновременно, не мешая другу другу, и соответственно, чтобы пользователь мог вводить еще какие-то данные в это же время. Давайте возьмем например программу MS Word, так вот там идет, когда Вы печатаете — выполняется как минимум два потока и они не мешают друг другу. То есть Вы печатаете — это один поток, а второй поток — проверка орфографии, который не мешает Вам совсем печатать, правда? Вот Вам и пример многопоточного приложения, преимущества Вы уже думаю поняли их. Но не стоит злоупотреблять потоками, Вы можете их использовать там где они совсем ненужны, а это лишнее мегабайты памяти и так далее.
За потоки в Delphi отвечает класс TThread, который имеет методExecute, это можно сказать основной и обязателаьный метод, который выполняет действия потока, а также синхронизирует процедуры вывода результатов например.
Пример описание на Delphi следующий
type
MyThread = class(TThread)
private
protected
procedure Execute; override;
end;
Также в Delphi можно класс-поток создать с помощью мастера, для этого необходимо выполнить File-New-Other-Thread Object, который находится во вкладке New. Далее необходимо в появившемся окне ввести имя своего класса-потока и нажать клавишу «Ок». Но затем, где Вы будете использовать Ваш поток, необходимо в Uses подключить его.Также в спецификаторах доступа Вы сможете описывать свои процедуры, функции, переменные, свойства и так далее. Затем объявляете переменную данного класса
- var
- tt:MyThread;
и затем создаете поток
- tt:=MyThread.Create(True);
Если при создании указываете True, то вызывается сразу процедураExecute. Также если у Вас несколько потоков, то между ними можно выставлять приоритеты, но об этом уже позже.