Облака / Clouds
    Go to Copy.com
    Copy.com
    The bast cloud service
    Get 20 GB free!!!
    Support WebDav.
    Show more >>

    Go to Dropbox.com
    Dropbox.com
    time-tested cloud storage
    Support WebDav.
Все бесплатно
    Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.



Вопросы
  Создать таблицу ABS (AbsoluteDB)
   Категория: Базы данных
  Что значит Paramstr
   Категория: Приложение
  Узнать запущен ли сервис FireBird
   Категория: Интернет и Сети
  Создание и удаление полей
   Категория: Базы данных
  Число четное или нечетное
   Категория: Математика
  Как удалить не пустой каталог
   Категория: Файловая система
  Вставить иконки в Grid
   Категория: Компоненты
  Вычислить логарифм
   Категория: Математика

Delphi - Справочник: IsMultiThread

ABCDEFGHIJKLMNOPQRSTUVWXYZ

  << Вернуться  

 IsMultiThread
function IsMultiThread : Boolean;
Функция (Unit System)
Возвращает True, если код выполняет множество потоков
Описание:
Функция IsMultiThread возвращает истину, когда есть не менее одного потока, выполняющегося в дополнение к основному потоку программы.

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

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

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

  << Вернуться