Для студентов РУТ (МИИТ) по предмету ИнформатикаПараллельное программированиеПараллельное программирование
2025-04-062025-04-06СтудИзба
Лабораторная работа: Параллельное программирование
Описание
1. Разработать консольную многопоточную программу, выполняющую корректировку разделяемых данных, определенных одной или двумя глобальными переменными, по следующему алгоритму. Главный поток отслеживает нажатие пользователем клавишей двух типов. В случае нажатия на клавишу 1-го типа выполняется операция 1, при нажатии на клавишу 2-го типа выполняется операция 2. Функциональность каждой операции определяется в соответствии с заданным вариантом. Начальные значения разделяемых переменных устанавливаются самостоятельно. Для выполнения операций 1 и 2 в программе создаются отдельные потоки. Функция потока выполняет следующую последовательность действий:
- копирование разделяемой переменной в буферную переменную;
- отработка паузы (задержки) для увеличения времени выполнения операции (требуется для воспроизведения эффекта наложения трасс потоков);
- вычисление результата заданной операции в буферной переменной;
- копирование полученного значения буферной переменной в разделяемую переменную. В программе заданные операции оформляются в виде одной функции потока (вариант с индексом «а»).
2. Для контроля правильности результатов выполнения операций над разделяемой переменной необходимо предусмотреть выполнение этих же операций непосредственно в главном потоке. Для этого необходимо создать пременную-дублер с начальным значением, равным значению разделяемой переменной. Изменение пременной-дублера производить в соответствии с заданным вариантом.
3. В главном потоке предусмотреть формирование и вывод на экран журнала (лога), отражающего действия пользователя и результаты, зафиксированные после выполнения каждой операции:
· код нажатой клавиши;
· идентификатор созданного потока;
· время нажатия на клавишу;
· время окончания работы потока;
· значения разделяемых переменных;
· значение переменной-дублера.
Результаты представить в виде таблицы, с обязательным выводом заголовков всех столбцов журнала.
4. Программа должна содержать шапку в виде комментария с указанием фамилии студента и номера группы, номера варианта и назначения программы (варианта задания).
5. Выполнить программу с двумя различными значениями времени задержки при выполнении операций (например: 0 и 300мс), сравнить полученные значения разделяемой переменной и переменной-дублера. Поскольку действия дочерних потоков, использующих общие разделяемые переменные, не синхронизируются, то при определенных обстоятельствах (при наложении трасс потоков) должны появиться расхождения между значением разделяемой переменной и значением переменной-дублера! Для получения эффекта наложения трасс потоков необходимо почаще нажимать на клавиши или увеличить время задержки.
6. Объяснить полученные результаты с помощью временных диаграмм, отражающих трассы нескольких (не менее 4-х) параллельно выполняющихся потоков. Для построения диаграмм использовать зафиксированные в журнале значения времени начала и окончания потоков, соблюдая масштаб и порядок следования. Для каждой диаграммы указать время задержки и привести ручной расчет значений переменной-дублера.
Содержание
Постановка задачи. 3
Решение. 5
Заключение. 8
Листинг программы на языке С++. 9
- копирование разделяемой переменной в буферную переменную;
- отработка паузы (задержки) для увеличения времени выполнения операции (требуется для воспроизведения эффекта наложения трасс потоков);
- вычисление результата заданной операции в буферной переменной;
- копирование полученного значения буферной переменной в разделяемую переменную. В программе заданные операции оформляются в виде одной функции потока (вариант с индексом «а»).
2. Для контроля правильности результатов выполнения операций над разделяемой переменной необходимо предусмотреть выполнение этих же операций непосредственно в главном потоке. Для этого необходимо создать пременную-дублер с начальным значением, равным значению разделяемой переменной. Изменение пременной-дублера производить в соответствии с заданным вариантом.
3. В главном потоке предусмотреть формирование и вывод на экран журнала (лога), отражающего действия пользователя и результаты, зафиксированные после выполнения каждой операции:
· код нажатой клавиши;
· идентификатор созданного потока;
· время нажатия на клавишу;
· время окончания работы потока;
· значения разделяемых переменных;
· значение переменной-дублера.
Результаты представить в виде таблицы, с обязательным выводом заголовков всех столбцов журнала.
4. Программа должна содержать шапку в виде комментария с указанием фамилии студента и номера группы, номера варианта и назначения программы (варианта задания).
5. Выполнить программу с двумя различными значениями времени задержки при выполнении операций (например: 0 и 300мс), сравнить полученные значения разделяемой переменной и переменной-дублера. Поскольку действия дочерних потоков, использующих общие разделяемые переменные, не синхронизируются, то при определенных обстоятельствах (при наложении трасс потоков) должны появиться расхождения между значением разделяемой переменной и значением переменной-дублера! Для получения эффекта наложения трасс потоков необходимо почаще нажимать на клавиши или увеличить время задержки.
6. Объяснить полученные результаты с помощью временных диаграмм, отражающих трассы нескольких (не менее 4-х) параллельно выполняющихся потоков. Для построения диаграмм использовать зафиксированные в журнале значения времени начала и окончания потоков, соблюдая масштаб и порядок следования. Для каждой диаграммы указать время задержки и привести ручной расчет значений переменной-дублера.

Содержание
Постановка задачи. 3
Решение. 5
Заключение. 8
Листинг программы на языке С++. 9
Характеристики лабораторной работы
Предмет
Учебное заведение
Просмотров
1
Качество
Идеальное компьютерное
Размер
293,23 Kb
Список файлов
laboratornaya-1-primer-ot-odnogruppnika.docx

Все деньги, вырученные с продажи, идут исключительно на шаурму