Справочник функций и процедур 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;

Google  
 
Описание
Функция 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
Нажмите это, когда диалог потока закончится.
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


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