четверг, 23 сентября 2010 г.

Использование OmniThread Libray (OTL) для создания многопоточных приложений - 1

Предисловие

В цикле заметок пойдет речь о создании приложений с использование библиотеки OmniThreadLibrary (http://otl.17slon.com/index.htm). Данная библиотека облегчает создание многопоточных приложений в среде Delphi и предоставляет программисту простые и  гибкие возможности по работе с фоновыми задачами, чем стандартный класс TThread. Данная цикл заметок предоставляет из себя материал, взятый из официальной документации, блога автора библиотеки, комментарий читателей блога и своих наблюдений. Фактически мной произведена некоторая систематизация материала (библиотека находится в постоянной разработке и от версии к версии часто видоизменяется, поэтому официальная документация страдает пробелами и изъянами)  и выполнено дополнительное комментирование некоторых частей официальной документации, где по-моему мнению не хватает  более подробного материала.

Hello Word

Ну, какой же программист не писал “Hello Word”, сделаем это и мы, наш пример должен уметь создавать простейшую фоновую задачу с помощью OTL в которой будет проигран звук.
Начнем с создания нового Delphi VCL приложения. Переместите кнопку на форму и создайте обработчик события onClick

procedure TfrmTestOTL.btnBeepClick(Sender: TObject);
begin
   CreateTask(Beep, 'Beep').Run;
end;

Это создаст потоковую задачу с именем 'Beep' и главным методом Beep. Этот код создаст новый поток и запустит выполнение этой задачи в контексте вновь созданного потока. Это все!

Что бы сделать пример полнофункциональным, добавьте модуль OtlTask в раздел uses и создайте метод Beep.

procedure TfrmTestOTL.Beep(task: IOmniTask);
begin
 MessageBeep(MB_ICONEXCLAMATION);
end;

Запустите программу, нажмите на кнопку. Прозвучит звук.
Если вы не верите, что этот код выполняется в фоновом потоке, создайте точку останова на вызове MessageBeep и проверьте окно Thread Status. Она ясно показывает, что  точка останова находиться во втором потоке. Данный пример находится в папке tests\0_Beep библиотеки OTL.
Как видите простое многопоточное приложение создать не сложно. Я думаю, код в пару строк для реализации нужной простой функциональности довольно неплохое начало для знакомства с OTL.

Комментариев нет:

Отправить комментарий