Использование потоков в приложениях Microsoft Windows
Краткое сожержание материала:
Размещено на
Содержание
- Задание
- 1.1 Описание общего алгоритма
- 1.2 Интерфейса программы
- 2. Описание методов решения и алгоритмов задач, реализуемых каждым потоком
- 2.1 Метод заполнения массива случайными числами
- 2.2 Метод вычисления минимальных и максимальных значений
- 2.3 Метод вычисления отклонений каждого значения от среднего арифметического
- 3. Описание методов создания, уничтожения и синхронизации потоков, примененных в программе
- 3.1 Создание потоков
- 3.2 Синхронизация потоков
- 3.3 Завершение потоков
- 4 Листинг программы
- Заключение
- Список использованной литературы
Задание
Разработать программу, которая создает в отдельном потоке случайный массив А из N целых чисел в диапазоне от - 999 до 999 выводит на экран эти числа. Создание и вывод элементов массива производится через заданное время T, N и T вводятся пользователем до запуска процесса. Массив обрабатывается двумя другими потоками В и С, работающими параллельно с потоком, создающим массив. Все потоки выводят результаты своей работы в текстовые окна, каждый поток в свое окно.
Задание B |
Задание C |
|
Вычисление минимального и максимального значений |
Вычисление отклонений каждого значения от среднего арифметического |
1. Описание общего алгоритма и интерфейса программы
1.1 Описание общего алгоритма
Диаграмма 1 - выполнение потоков
При нажатии кнопки "START", считываются данные с полей "N" и "Time", создаются новые объекты потоков и отправляется сигнал на их запуск.
Перед тем как поток будет выполнять вычисления, он ожидает сигнал об активизации объекта событие. На время вычислений (блок-схемы 1, 2,3) событие переходит в состояние пассивное. По завершению обработки вычислений событие переходит в состояние активное. За счет этого достигается синхронизация между потоками.
При закрытии программы или нажатии кнопки "STOP" потоки уничтожаются.
Диаграмма 1, показывает состояние потоков в течение времени выполнения.
1.2 Интерфейса программы
На главной форме располагается группа компонентов для ввода и вывода значений:
- Три поля (Thread1, Thread2, Thread3) для вывода значений
- "N" - указывает размерность массива
- "Time" - количество времени, через которое будут выводиться результаты в текстовые поля (Thread1, Thread2, Thread3).
Кнопка "START" создает потоки, в которых происходит вычисления среднего арифметического каждой тройки чисел массива и произведений каждого числа на его номер (индекс). Результаты выводятся на главной форме в поля (Thread1, Thread2, Thread3).
Кнопка "STOP" останавливает запущенные потоки.
Кнопка "EXIT" закрывает программу, при запущенных потоках уничтожает их.
поток программа интерфейс алгоритм
Рисунок 1 - Главная форма
2. Описание методов решения и алгоритмов задач, реализуемых каждым потоком
2.1 Метод заполнения массива случайными числами
Блок-схема 1 - Заполнение массива случайными числами от - 999 до 999
2.2 Метод вычисления минимальных и максимальных значений
Блок схема 3 - Вычисление минимального и максимального значения
Пример 1. Дан массив A = {-359, 126, 803, 913, - 716};
Решение:
Начальные значения min = 0, max = - 359;
A [1] |
-359 126 803 913 -716 359 < min (0); min = - 359 359 > max (-359); max = - 359 |
|
A [2] |
-359 126 803 913 -716 126 < min (-359); min = - 359 126 > max (-359); max = 126 |
|
A [3] |
-359 126 803 913 -716 803 < min (-359); min = - 359 803 > max (126); max = 803 |
|
A [4] |
-359 126 803 913 -716 913 < min (-359); min = - 359 913 > max (803); max = 913 |
|
A [5] |
-359 126 803 913 -716 716 < min (-359); min = - 716 716 > max (803); max = 913 |
Ответ: min = - 716, max = 913.
2.3 Метод вычисления отклонений каждого значения от среднего арифметического
Для вычисления отклонений всех чисел выполним следующие действия:
1. Находим среднее арифметическое;
2. Для вычисления отклонение из данного набора чисел вычитаем среднее арифметическое.
Среднее арифметическое нескольких величин - это отношение суммы величин к их количеству.
Среднее арифметическое находится по формуле
(2)
(3)
Пример 2. Дан массив A = {-359, 126, 803, 913, - 716};
Найти отклонений всех чисел от среднего арифметического.
Решение:
Сумма чисел в массиве (2):
Вычисление отклонения (3):
Блок схема 2 - Вычисление отклонений каждого значения от среднего арифметического
3. Описание методов создания, уничтожения и синхронизации потоков, примененных в программе
3.1 Создание потоков
Для создания многопоточных приложений в C++Builder реализован абстрактный класс TThread.
TThread - абстрактный класс, который допускает создание отдельных потоков выполняющихся в приложении.
Создайте потомка класса TThread, чтобы представить выполняемый поток в многопоточном приложении.
Каждый новый экземпляр потомка TThread - новый поток выполнения.
Множество экземпляров, полученные от класса TThread, делает C++Builder многопоточным приложением.
__fastcall TMyThread:: TMyThread (bool CreateSuspended)
: TThread (CreateSuspended)
{
}
// ---------------------------------------------------------------------
// B метод объекта Execute (), вставьте код, который должен выполняться, когда поток выполняется.
void __fastcall TMyThread:: Execute ()
{
// -- - Place thread code here - ---
}
// ----------------------------------------------------------------------
Для получения безопасного доступа к управлению свойствами и методами VCL-объектов в потоке предусмотрен метод Synchronize ()
// ---------------------------------------------------------------------------
void __fastcall ThreadLenghtLine:: Execute ()
{
FreeOnTerminate = true; // освободить занятую потоком память по окончании его работы
int ColN = N/6;
while (true) {
sum = 0;
WaitForSingleObject (FMain->g_BusyEvent [1], INFINITE); // ждём разрешение на обработку
ResetEvent (FMain->g_BusyEvent [1]); // запрещаем переформирование массива
ResetEvent (FMain->g_BusyEvent [0]); // запрещаем переформирование массива
for (int i = 0; i<ColN*6;) { // считаем длину
sum += CalcLengthL...
Использование потоков в приложениях Windows
Описание общего алгоритма и интерфейса программы. Метод заполнения массива случайными числами. Метод вычисления длины линии между пространственными то...
Windows ХР для бывалого бойца
Книга посвящена Windows ХР — новейшей версии Microsoft Windows. Популярно рассказано об истории ОС Windows, настройке Windows XР и корпоративной мигра...
Windows 8 Secrets
Windows 8 Secrets is the ultimate insider’s guide to Microsoft’s most exciting Windows version in years. Microsoft is introducing a major new release...
Microsoft Windows 7 In Depth
Microsoft Windows 7 In Depth is the comprehensive guide to Microsoft's Windows 7 for everyone who's no longer a Windows beginner: corporate, small off...
Introducing Microsoft Windows Vista
Introducing Microsoft Windows Vista presents Microsoft Windows Vista, the latest version of the Windows operating system, and provides a comprehensive...