- •Лабораторная работа №1 Сдать до 20.02 Тема: «Создание потоков».
- •Тема: «Создание процессов».
- •Процесс Child:
- •3.2 Поток main должен выполнить следующие действия:
- •3.3 Поток main должен выполнить следующие действия:
- •3.4 Поток main должен выполнить следующие действия:
- •3.5 Поток main должен выполнить следующие действия:
- •3.6 Поток main должен выполнить следующие действия:
- •3.7 Поток main должен выполнить следующие действия:
- •3.8 Поток main должен выполнить следующие действия:
- •3.9 Поток main должен выполнить следующие действия:
- •3.10 Поток main должен выполнить следующие действия:
- •3.11 Поток main должен выполнить следующие действия:
- •3.12 Поток main должен выполнить следующие действия:
Процесс Child:
Согласно индивидуальным вариантам Child выполняет:
1. Выполнить суммирование элементов итогового массива до заданной позиции k;
2. Найти в массиве повторяющиеся элементы (разместить их группы в массиве слева, остальные (одиночные) - соответственно справа). Тип элементов - вещественные числа.
3. Сортировка методом “пузырька”. Тип элементов - вещественные числа двойной точности
4. Поиск в массиве элементов из диапазона [A,B] (разместить их в массиве слева, остальные элементы массива - заполнить нулями). Тип элементов - целые числа без знака.
5. Сортировка выбором. Тип элементов - символы.
6. Поиск в массиве элементов >A (разместить их в массиве слева, остальные элементы массива - заполнить нулями). Тип элементов - целые числа без знака.
7. Поиск в массиве простых чисел (разместить их в массиве слева, остальные элементы массива - справа). Тип элементов - целые числа без знака.
8. Поиск в массиве элементов =X (разместить их в массиве слева, остальные элементы массива - справа). Тип элементов - символы.
9. Выполнить произведение элементов итогового массива до заданной позиции k; Тип элементов - целые числа, без знака.
10. Поиск в массиве лексем, (разделители – цифры). Полученные лексемы поместить в массиве слева, разделитель - пробел, остальные элементы - заполнить символом ‘0’. Тип элементов массива - символы.
11. Приведение массива к палиндрому (получившейся палиндром поместить в массиве слева, а лишние элементы соответственно – справа ) Тип элементов - символы
12. Сортировка выбором. Тип элементов - целые числа.
Примечания.
Для ожидания завершения работы процесса Child использовать функцию:
DWORD WaitForSingleObject(
HANDLE hHandle, // дескриптор объекта
DWORD dwMilliseconds // интервал ожидания в миллисекундах
);
где второй параметр установить равным INFINITE, например
WaitForSingleObject(hProcess, INFINITE); // ждать завершения процесса
Здесь hProcess – дескриптор процесса Child.
Дополнительное (или штрафное после 7.03) задание:
завершить процесс с помощью функции TerminateProcess
завершить процесс Parent с помощью функции ExitProcess;
Лабораторная работа №3.
Тема: «Синхронизация потоков».
Сдать до 20.03
Написать программу для консольного процесса, который состоит из трёх потоков: main , work, и третьего (см. варианты). Синхронизировать main и work, с помощью любых объектов синхронизации.
Глобальные переменные не использовать!
Индивидуальные варианты:
3.1 Поток main должен выполнить следующие действия:
создать массив, размерность и элементы которого вводятся пользователем с консоли;
вывести размерность и элементы исходного массива на консоль;
ввести число k;
запустить поток work;
запустить поток SumElement;
выводить на экран поэлементно элементы массива (итогового) параллельно с работой потока work;
известить поток SumElement о начале суммирования (момент запуска произойдёт после того, будут выведены на консоль k элементов массива (использовать событие);
Вывести на экран результат работы потока SumElement;
Поток work должен выполнить следующие действия:
запросить у пользователя временной интервал, требуемый для отдыха после подготовки одного элемента в массиве;
Найти в массиве неповторяющиеся элементы (разместить их в массиве слева, остальные соответственно справа). Элементы - символы.
извещать поток main о новом элементе;
после каждого готового элемента отдыхать в течение заданного интервала времени;
Поток SumElement должен выполнить следующие действия (Для синхронизации с потоком main, использовать критическую секцию, событие)
ждёт от потока main сигнал о начале суммирования(использовать событие);
выполнить суммирование элементов итогового массива до заданной позиции k;
известить(использовать критическую секцию) поток main о выводе результата
