Справочник функций и процедур Delphi: IsMultiThread

  Навигация по первой букве:

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

IsMultiThread
Функция
Возвращает True, если код выполняет множество потоков System unit
  function IsMultiThread : Boolean;


Описание
Функция IsMultiThread возвращает истину, когда есть не менее одного потока, выполняющегося в дополнение к основному потоку программы.

Потоки являются сложным вопросом (к примеру, наш пример является очень простым, но совсем не коротким), и не может быть детально рассмотрен здесь.

Потоки могут быть запущены, используя BeginThread, как в примере, или используя класс TThread.
Похожие команды
BeginThread  Начинает отдельный поток выполнения кода

EndThread  Заканчивает поток с кодом завершения

ThreadVar  Определяет переменные, которые получает каждый поток как отдельный экземпляр

 
Пример кода : Простой пример
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  Forms, Dialogs, Windows, SysUtils;

type
  TMsgRecord = record
    msg    : string[30];
  end;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

Implementation
{$R *.dfm}        // Вложение определений формы

ThreadVar         // Мы должны позволить каждому потоку иметь свои собственные
                  // образцы из переданной переменной записи
  msgPtr : ^TMsgRecord;

// Частная процедура потока для показа строки
function ShowMsg(Parameter : Pointer) : Integer;
begin
  // Установка в 0 возвращаемых значений
  Result := 0;

  // Отображение указателя на переданные данные
  // Обратите внимание, что каждый поток имеет отдельную копию msgPtr
  msgPtr := Parameter;

  // Отображение этого сообщения
  ShowMessagePos('Сообщение потока : '+msgPtr.msg, 200, 100);

  // Конец потока
  EndThread(0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  id1         : LongWord;
  thread1     : Integer;
  msg1        : TMsgRecord;
  showMsgFunc : TThreadFunc;

begin
  // Установка поточной функции
  showMsgFunc := Addr(ShowMsg);

  // Установка наших отображаемых сообщений
  msg1.msg    := 'Hello World';

  // Индикация того, что мы не выполняем поток
  if IsMultiThread
  then ShowMessage('Многопоточный')
  else ShowMessage('Простой поток');

  // Начало выполнения первого потока, спрошивающего имя пользователя
  thread1 := BeginThread(nil,
                         0,
                         showMsgFunc,
                         Addr(msg1),
                         0,
                         id1);

  // Индикация того, что мы выполняем поток
  if IsMultiThread
  then ShowMessage('Многопоточный')
  else ShowMessage('Простой поток');

  // Гарантируем, что поток будет закрыт только когда всё сделано
  ShowMessagePos('Нажмите это, когда диалог потока закончится.', 200, 300);

  // Наконец, закрываем потоки
  CloseHandle(thread1);
end;

end.
Последовательность диалогов отобразит:

Простой поток
Многопоточный + Сообщение потока : Hello World
Нажмите это, когда диалог потока закончится.
 


Последние добавленные на сайт исходники

TDictionary Custom Sort

Fast Watermark Sources

3D Designer

Sik Screen Capture

Patch Maker

Айболит (remote control)

 

ListBox Drag & Drop

Доска для игры Реверси

Графические эффекты

Рисование по маске

Перетаскивание изображений

Canvas Drawing

 

Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software (источник – "DelphiBasics")

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram