Написать программу для консольного процесса, который состоит из трёх потоков: main , work, и третьего:
Поток main должен выполнить следующие действия:− создать массив, размерность и элементы которого вводятся пользователем с консоли;
− вывести размерность и элементы исходного массива на консоль;
− запустить поток work;
− запустить поток SumElement;
− освободить выходной поток stdout после вывода на консоль каждого нового элемента массива.
− выводить на экран поэлементно элементы массива (итогового) параллельно с работой потока work;
Поток work должен выполнить следующие действия (Для синхронизации с потоком main -использовать семафор. Проверить работу используя бинарный семафор для синхронизации с потоком main, объяснить отличия, если есть!):
− запросить у пользователя временной интервал, требуемый для отдыха после подготовки одного элемента в массиве;
− найти в массиве повторяющиеся элементы (разместить их группы в массиве слева, остальные соответственно справа). Элементы – вещественные числа.
− извещать поток main о новом элементе;
− после каждого готового элемента отдыхать в течение заданного интервала времени;
− известить поток SumElement о начале суммирования (момент запуска произойдёт после того, будет сформирован итоговый массив.
Поток SumElement должен выполнить следующие действия (Для синхронизации с потоком work, использовать
− ждёт от потока work сигнал о начале суммирования;
− выполнить суммирование элементов итогового массива;
− вывести итоговую сумму.
| Гарантия на работу | 1 год |
| Средний балл | 4.54 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |