- •Государственное образовательное учреждение высшего профессионального образования
- •1 Формулировка задания
- •2.1 Описание алгоритма
- •2.2 Абстрактная модель программы.
- •2.2.1 Создание потоков
- •2.2.2 Приостановка и возобновление выполнения потоков
- •2.2.4 Смена приоритетов
- •Заключение
- •Список используемой литературы
- •Приложение а
2.2 Абстрактная модель программы.
Программа должна соответствовать следующим требованиям :
-создавать потоки;
-возможность приостанавливать и возобновлять работу потоков;
-возможность менять приоритеты выполнения потоков;
-графическая демонстрация выполнения потоков.
2.2.1 Создание потоков
Создание потоков реализуется с помощью стандартного метода класса TThread – Create(CreateSuspended:boolean), где CreateSuspended – параметр логического типа. Если CreateSuspended=false, то выполнение процедуры Execute начнётся сразу после создания объекта потока, иначе – выполнение потока начнётся только после вызова метода Resume.В разработанной программе три потока T1,T2 и Т3 создаются при создании формы(окна приложения). Эти потоки создаются и сразу же начинает своё выполнение.
2.2.2 Приостановка и возобновление выполнения потоков
Приостановка выполнения потоков осуществляется с помощью метода Suspend, возобновление - Resume.
2.2.4 Смена приоритетов
Смена приоритетов выполнения потоков происходит сменой свойства Priority, возможные значения которого приведены в Таблице №1 «Приоритеты»:
tpIdle |
Поток выполняется ,только когда система свободна |
tpLowest |
Приоритет на 2 пункта ниже нормального |
tpLower |
Приоритет на 1 пункт ниже нормального |
tpNormal |
Нормальный приоритет потока |
tpHigher |
Приоритет на 1 пункт выше нормального |
tpHighest |
Приоритет на 2 пункта выше нормального |
tpTimeCritical |
Поток имеет наивысший приоритет. |
Таблица №1 «Приоритеты»
2.2.5 Графическая реализация выполнения потоков
В качестве графической реализации выполнения потоков подгружается картинка. Картинка представляет собой поток. Если поток выполняется – то картинка движется .В противном случае – стоит.
2.2.6 Синхронизация
Решение проблемы синхронизации потоков осуществляется при помощи стандартного метода Synchronyze.
3.1 Алгоритм на языке программирования высокого уровня.
Для реализации данной модели использован язык программирования Object Pascal, среда разработки – Delphi.
3.2 Окно приложения
Рисунок №1 «Окно программы»
3.3 Листинги программы
Листинги программы находятся в Приложении А.
4 Результат работы программы
Программа тестировалась на двух- и однопроцессорной системе.
Двухпроцессорная система:
Рисунок №2 «Работа на двухпроцессорной системе»
При работе программы на двухпроцессорной системе при слабой загрузке операционной системы другими процессами, оба потока выполняются параллельно ,независимо от приоритета.
Однопроцессорная система:
Рисунок №3 «Работа на однопроцессорной системе»
При работе программы на однопроцессорной системе при слабой загрузке операционной системы другими процессами, поток, имеющий больший приоритет, опережает поток с меньшим приоритетом, приостанавливая работу «медленного» потока.
Заключение
При выполнении многопотоковых программ на многопроцессорных системах, при организации выполнения каждого потока отдельным процессором, мы получаем выигрыш в производительности , так как работа потоков будет выполнятся параллельно.