4.2. Создание приложения
4.2.1. Создайте новый проект и сохраните его в отдельной папке (например, Lz_3).
4.2.2. Разместите на форме список TMemo, движок TScrollBar, кнопку TButton для запуска задач и 7 индикаторов TGauge (панель элементов Samples) с соответствующими метками TLabel. Вариант интерфейса приложения приведен на рис. 2.
Рис. 2. Вариант интерфейса приложения
4.2.3. В модуле формы создать и описать процедуры:
1. Нажатия на кнопку “Запуск”, в которой:
деактивировать кнопку;
очистить список TMemo;
сбросить индикаторы TGauge (установить свойство Progress в 0);
вызвать процедуру запуска потоков.
2. Создания формы (пока оставить в виде заглушки).
3. Изменения позиции движка (пока оставить в виде заглушки).
4.2.4. Вставить в проект новый модуль для описания потоков (File New New Unit). Подключить его к модулю формы.
4.2.5. В модуле потоков подключить модули Classes, Gauges, StdCtrls, SyncObjs и описать следующие элементы программы:
1. Запись в которой содержатся параметры для инициализации потоков:
имя потока;
имя запустившего потока;
“длина” потока.
2. Класс базового потока (от которого будут порождаться все потоки программы) состоящий из частных полей:
строка состояния (типа TGauge);
“длина” потока (Integer);
текущее состояние задачи (LongInt);
признак завершения задачи (Boolean);
имя задачи;
имя запустившей задачи;
строка для вывода сообщений;
защищенных методов:
выполнение задачи;
прорисовка строки состояния;
вывод сообщения (в поле TMemo);
завершение задачи (виртуальный, абстрактный);
и общедоступного конструктора с параметрами:
строка состояния;
параметры инициализации.
3. Классы потоков (A-G), в которых переопределяется метод завершения задачи.
4. Процедуру запуска потоков. Параметрами процедуры являются имена строк состояния, размещенных на форме (все 7 штук).
5. Глобальные переменные:
кнопка запуска потоков (TButton);
список сообщений (TMemo);
задержка (Integer);
параметры инициализации (тип, описанные в п. 1);
7 потоков (типы, описанные в п. 3);
критическая секция (TCriticalSection).
4.2.6. В модуле формы вставить код в процедуры:
1. Создания формы:
кнопке запуска потоков модуля описания потоков поставить в соответствие кнопку “Запуск” формы;
переменной задержки присвоить значение свойства Position движка (положение движка будет определять величину задержки);
списку сообщений модуля описания потоков поставить в соответствие список TMemo формы.
2. Изменения позиции движка:
переменной задержки присвоить значение свойства Position движка.
4.2.7. В модуле описания потоков запрограммировать процедуры прорисовки строки состояния и вывода сообщения в список.
4.2.8. Составить программы реализации конструктора потоков и остальных методов в соответствии с алгоритмами работы (рис. 3-10).
4.3. Исследование работы приложения
4.3.1. Исследовать взаимодействие потоков, изменяя величину задержки и другие параметры программы. Сделать выводы о характере взаимодействия процессов и влиянии различных параметров на ход исполнения процессов.