Цель: Научиться проектировать многопоточные приложения ( multithread applications ) и использовать основные средства взаимодействия в среде ОС.
В разделе необходимо составить программу, которая бы реализовывала параллельное выполнение проекта в среде ОС Windows. При этом необходимо воспользоваться механизмом вытесняющей многозадачности (Потоки/Процессы) и доступными средствами синхронизации и обмена данными.
Структура проекта задается двудольным графом (аналогичным сети Петри), в котором каждый узел представляет собой блок обработки, а переход – точку синхронизации и/или передачи данных. В зависимости от варианта, проект может иметь структуру одного из следующих типов:
Тип обработки для каждого узла зависит от номера варианта и берется из таблицы. Все блоки обработки имеют один вещественный аргумент и один вещественный результат. Аргумент формируется по формуле:
Arg = Σ Rez * Nblock * Nvar
где Σ Rez сумма результатов входящих блоков;
Nblock номер блока в конфигурации;
Nvar номер варианта.
Следует обратить внимание на то, что получение суммы результатов требует использования средств защиты доступа к разделяемым данным.
Результат обработки определяется типом обработчика:
“начало” — начинает выполнение проекта (результат всегда = 1);
“конец” — завершает выполнение проекта – выводит на экран свой аргумент, закрывает все потоки, освобождает ресурсы;
SS – SS(Arg) – вычисление суммы ряда Σ ABS(sin(i)) для i от 1 до модуля Arg;
SC – SC(Arg) – вычисление суммы ряда Σ ABS(cos(i)) для i от 1 до модуля Arg;
IL – IL(Arg) – вычисление определенного интеграла ABS(sin(x)) на интервале от -Arg до +Arg методом левых прямоугольников с разбиением на 100*Arg интервалов;
IR – IR(Arg) – вычисление определенного интеграла ABS(cos(x)) на интервале от -Arg до +Arg методом правых прямоугольников с разбиением на 100*Arg интервалов;
IT – IT(Arg) – вычисление определенного интеграла ABS(cos(x)*sin(x)) на интервале от -Arg до +Arg методом трапеций с разбиением на 100*Arg интервалов.
Программная реализация проекта должна удовлетворять следующим требованиям:
1) необходимо исключить возможность одновременного выполнения в системе более чем одной копий проекта (при повторном запуске должно выдаваться соответствующее сообщение и прекращаться выполнение второй копии программы);
2) для каждого узла обработки (независимо от разбиения проекта на потоки) необходимо выводить в LOG-файл сообщения:
‒ при входе в блок – сообщение о начале соответствующей обработки;
‒ при завершении обработки – сообщение о прекращении обработки и результат.
LOG-файл – один, общий для всего проекта (его необходимо представить в отчете).
1) в любом случае проект не должен выполняться более 20 секунд – если за это время вычисления не были закончены, то необходимо принудительно завершить все потоки и выдать соответствующее сообщение на экран и в LOG-файл;
2) для взаимодействия потоков в программе, в зависимости от варианта, необходимо использовать различные синхронизирующие объекты WIN32 API. В случае, если для каких либо целей указанный тип синхронизирующих объектов не подходит – необходимо объяснить почему они не подходят для этих целей и обосновать выбор другого типа объектов. Используются следующие типы синхронизирующих объектов из классификатора по заданным вариантам:
1. Критические секции (critical sections) и Потоки (threads) как синхронизирующие объекты;
2. Взаимоисключения (mutexes);
3. События (events);
4. Семафоры (semaphores).
Методические указания
1) Сначала необходимо ознакомиться с концепцией вытесняющей многозадачности и средствами взаимодействия потоков и процессов в среде ОС Windows.
2) Описать постановку задания для своего варианта (см. таб 4.1) с конкретизацией блоков обработок и структуры проекта.
3) Для своей конфигурации выбрать вариант разбиения проекта на потоки и механизмы синхронизации ивзаимодействия потоков. В зависимости от варианта необходимо использовать преимущественно рекомендованные средства взаимодействия ( в случае если предложенный объект синхронизации не пригоден для решения поставленной задачи, необходимо обосновать выбор другого средства взаимодействия).
4) Написать и отладить программу на языке программирования высокого уровня в среде WIN32 API (например можно использовать Microsoft Visual C++ и выше).
5) Составить отчет, при сдаче необходимо уметь проявлять свои знания вытесняющей многозадачности и средств взаимодействия потоков и процессов в среде ОС Windows.
Содержание отчета
1) Постановка задачи для своего варианта: структура проекта в виде графа (см.рис. 2.1), замечания по реализации алгоритмов, выбор средств взаимодействия потоков в проекте и обоснование этого выбора…
2) Листинги программ и спецификации основных процедур и функций. Содержание LOG-файла после выполнения программы.
Таблица 4.1 – Варианты заданий
| Номер варианта | Номер конфигурации | Типы блоков обработки (Nblock) | |||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ||
| 1. | 3 | IT | IR | IT | IR | SS | IL | SS | SS |
| 2. | 2 | IT | IR | IT | IR | IT | IL | SS | SS |
| 3. | 1 | SC | IR | IT | IR | IT | IL | IT | SS |
| 4. | 3 | IT | SS | IT | IR | SS | IT | SC | SS |
| 5. | 2 | SC | IT | IT | IR | SS | IL | IT | IT |
| 6. | 1 | SS | SS | IT | IR | IT | SS | SS | IT |
| 7. | 3 | IT | SC | IT | IR | SS | IT | SS | SS |
| 8. | 2 | SS | SC | IT | IR | SS | SS | IT | SS |
| 9. | 1 | SC | IR | IT | SC | IT | SC | IT | SS |
| 10. | 2 | SC | IR | IT | IR | IT | SC | SS | IT |
| 11. | 3 | SC | IR | IT | IR | IT | SC | SS | IT |
| 12. | 3 | SS | IR | IT | IR | SS | IL | SS | IT |
| 13. | 2 | SS | IR | IT | IR | IT | IL | SS | IT |
| 14. | 2 | SS | SC | SC | IT | SS | IL | SS | SS |
| 15. | 1 | IT | IR | IT | IR | IT | IT | SS | SS |
| 16. | 1 | SS | IR | IT | IR | SS | IL | IT | IT |
| 17. | 3 | SS | IR | IT | SC | SS | IL | SS | IR |
| 18. | 3 | IT | IT | IT | IT | IT | IT | SS | SS |
| 19. | 3 | SS | SS | IT | IR | SS | IL | SS | SS |
| 20. | 2 | SS | SS | IT | IR | SS | IR | SS | IT |
| 21. | 2 | IT | IT | SC | IT | IT | IL | IT | IT |
| 22. | 2 | SS | IT | SC | IR | IT | IR | IT | IL |
| 23. | 1 | SS | SS | SS | SC | IT | IR | SS | IR |
| 24. | 1 | IT | IT | SC | IR | IT | IL | SS | SS |
| 25. | 1 | SS | IR | IT | IR | SS | SC | SS | SC |
| 26. | 2 | SC | IR | IT | IR | SS | IL | SS | SS |
| 27. | 3 | IR | IR | SC | IT | SS | IL | SS | SS |
| 28. | 1 | IR | IR | IT | SS | SC | IL | SS | SS |
| 29. | 2 | IR | IR | IT | SS | SS | IL | SS | SS |
| 30. | 1 | IT | IT | SC | IT | IT | IL | IT | IT |
| 31. | 3 | IT | IR | IT | IR | SS | IL | SS | SS |
| 32. | 2 | IT | IR | IT | IR | IT | IL | SS | SS |
| 33. | 1 | SC | IR | IT | IR | IT | IL | IT | SS |
| 34. | 3 | IT | SS | IT | SC | IT | IT | SC | SS |
| 35. | 2 | SC | IT | IT | SC | IR | IT | IT | IT |
| 36. | 1 | SS | SS | IT | SS | SC | IT | SS | IT |
| 37. | 3 | IT | SC | IT | SC | IR | IT | SS | SS |
| 38. | 2 | SS | SC | IT | IT | IR | SS | IT | SS |
| 39. | 1 | SC | IR | IT | IT | IR | SS | IT | SS |
| 40. | 2 | IR | SS | IT | SS | SC | IL | IR | SS |
| 41. | 3 | SС | SS | IL | SS | SC | IT | SS | IT |
| 42. | 2 | IT | IT | SC | IR | IT | IL | IT | SS |
| 43. | 1 | IT | IR | IT | IR | SS | IL | IT | SS |
| 44. | 3 | SС | IR | IT | IR | SS | IT | SС | SC |
| 45. | 2 | SC | IR | IT | IR | IT | SC | SC | IT |
| 46. | 3 | SC | IR | IT | IR | IT | SC | SC | IT |
| 47. | 2 | SS | IR | IT | IR | SS | IL | SS | IT |
| 48. | 1 | SS | IR | IT | IR | IT | IL | SS | IT |
| 49. | 3 | IT | IR | IT | IR | SS | IL | IT | SS |
| 50. | 2 | IT | IR | IT | IR | IT | IL | IT | SS |
| 51. | 1 | SS | IR | IT | IR | SС | IL | IT | IT |
| 52. | 2 | SS | IR | IT | IT | SS | IL | SS | IR |
| 53. | 3 | IT | IL | IR | IT | IT | IT | SS | SS |
| 54. | 2 | SС | SS | IL | IL | SC | IT | SS | IR |
| 55. | 3 | IT | IR | IT | IR | SS | IL | SS | SS |
| 56. | 2 | IT | IR | IT | IR | IT | IL | SS | SS |
| 57. | 1 | SC | IR | IT | IR | IT | IL | IT | SS |
| 58. | 3 | IT | SS | IT | IR | SS | IT | SC | SS |
| 59. | 2 | SC | IT | IT | IR | SS | IL | IT | IT |
| 60. | 1 | SS | SS | IT | IR | IT | SS | SS | IT |
| 61. | 3 | IT | SC | IT | IR | SS | IT | SS | SS |
| 62. | 2 | SS | SC | IT | IR | SS | SS | IT | SS |
| 63. | 1 | SC | IR | IT | SC | IT | SC | IT | SS |
| 64. | 2 | SC | IR | IT | IR | IT | SC | SS | IT |
| 65. | 3 | SC | IR | IT | IR | IT | SC | SS | IT |
| 66. | 3 | SS | IR | IT | IR | SS | IL | SS | IT |
| 67. | 2 | SS | IR | IT | IR | IT | IL | SS | IT |
| 68. | 2 | SS | SC | SC | IT | SS | IL | SS | SS |
| 69. | 1 | IT | IR | IT | IR | IT | IT | SS | SS |
| 70. | 1 | SS | IR | IT | IR | SS | IL | IT | IT |
| 71. | 3 | SS | IR | IT | SC | SS | IL | SS | IR |
| 72. | 3 | IT | IT | IT | IT | IT | IT | SS | SS |
| 73. | 3 | SS | SS | IT | IR | SS | IL | SS | SS |
| 74. | 2 | SS | SS | IT | IR | SS | IR | SS | IT |
| 75. | 2 | IT | IT | SC | IT | IT | IL | IT | IT |
| 76. | 2 | SS | IT | SC | IR | IT | IR | IT | IL |
| 77. | 1 | SS | SS | SS | SC | IT | IR | SS | IR |
| 78. | 1 | IT | IT | SC | IR | IT | IL | SS | SS |
| 79. | 1 | SS | IR | IT | IR | SS | SC | SS | SC |
| 80. | 2 | IT | IT | SC | IR | IT | IL | IT | SS |
Тип синхронизирующих объектов выбирается из классификатора.
|
|
Рисунок 4.1 – Номер конфигурации
Раздел 5
Дата: 2019-02-25, просмотров: 406.