Немного о потоках

2 минуты на чтение

В этой статье хотел бы рассказать немного о потоках. Потому, что дальше хочу показывать примеры с ними, а именно 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. Также если у Вас несколько потоков, то между ними можно выставлять приоритеты, но об этом уже позже.

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Ну вот наконец-то я созрел для написании статьи, где я хочу рассказать о том, как можно скачать файл из Интернет без зависания формы, то есть с использованием потоков. Сказать честно, сам в потоках давно разбираюсь так до конца и не разобрался, но маленькую пр...
В этой статье хотел бы поговорить о интерпретаторе MS ScriptControl. Немного поговорим о нем, то есть немного теории. В своих проектах, некоторые пользователи хотят использовать какой-нибудь другой язык программирования, например, JavaScript, VBScript, Perl и ...
Всем привет. Как Вы заметили, на блоге больше недели ничего не публиковалось, а это все потому что я отсутсвовал. Немного приболел, пришлось мне лечь в больницу :(. Но, сейчас вроде бы мне стало немного полегче, в больнице, думал хоть отдохну от компьютеров и ...