Operation Systems lab №2 Тема: «Создание потоков».
Задача. Написать программу для консольного процесса, который состоит из трех потоков: main, min_max и average. Поток main должен выполнить следующие действия:
- Создать массив целых чисел, размерность и элементы которого вводятся с консоли.
- Создать потоки min_max и average.
- Дождаться завершения потоков min_max и average.
- Заменить максимальный и минимальный элементы массива на среднее значение элементов массива. Вывести полученные результаты на консоль.
- Завершить работу. Поток min_max должен выполнить следующие действия:
- Найти минимальный и максимальный элементы массива и вывести их на консоль. После каждого сравнения элементов «спать» 7 миллисекунд.
- Завершить свою работу. Поток average должен выполнить следующие действия:
- Найти среднее арифметическое значение элементов массива и вывести его на консоль. После каждой операции суммирования элементов «спать» 12 миллисекунд.
- Завершить свою работу. Примечания.
- Для ожидания завершения работы потоков min_max и average использовать функцию: DWORD WaitForSingleObject( HANDLE hHandle, // дескриптор объекта DWORD dwMilliseconds // интервал ожидания в миллисекундах ); где второй параметр установить равным INFINITE. Например WaitForSingleObject(hAverage, INFINITE); // ждать завершения потока Здесь hAverage – дескриптор потока average.
- Для засыпания использовать функцию: VOID Sleep( DWORD dwMilliseconds // миллисекунды ); Например, Sleep(12); // спать 12 миллисекунд