Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка курсовые АТП-41.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
245 Кб
Скачать
☆

Вариант № 6

Задание: Разработать консольное приложение, в котором выполняются два потока, причем с разными приоритетами. Создать метод, который содержит цикл, в котором подсчитывается количество итераций. Цикл останавливается либо на счете 1 000 000 000, либо в тот момент, когда статическая переменная stop примет значение true. До входа в этот цикл переменная stop установлена равной false. Первый поток, "досчитав" до 1 000 000 000, устанавливает переменную stop равной значению true. Это заставляет второй поток отказаться от следующего кванта времени (объем процессорного времени, выделяемого потоку). На каждом проходе цикла содержимое строковой переменной currentName сравнивается с именем выполняющегося потока. Если они не совпадают, значит, имело место переключение задач. При каждом переключении задач отображается имя нового потока, а переменной currentName присваивается имя текущего потока. По завершении выполнения обоих потоков отображается количество итераций, выполненных в каждом цикле.

Вариант № 7

Задание: Разработайте многопоточное приложение, состоящее из трёх вторичных потоков. Первый поток будет увеличивать локальную переменную count 100 000 000 раз, второй 50 000 000 раз, третий 20 000 раз. Результат выполнения каждого из потоков выводится на главное окно приложения.

Вариант № 8

Задание: Напишите программу, которая создает три процесса, два из которых выполняют запись в канал, а один - чтение из него. Процесс, выполняющий чтение, должен выводить все получаемые им сообщения на свой стандартный вывод.

Вариант № 9

Задание: Основой поток создает другой поток, передавая ему параметр. Параметр может принимать два значения: 0 или 1. Если параметр равен 0, то поток организует задержку в 10 мс и завершает свое выполнение. Если параметр равен 1, то второй поток создает третий поток, который содержит единственную ассемблерную операцию NOP. Измерить время исполнения второго потока в обоих случаях. Измерения повторить 10 раз.

Вариант № 10

Задание: Основной поток создает 2 потока приостановленными. Затем запускает один из созданных потоков, который в свою очередь запускает другой поток. Измерить интервал времени от запуска первого потока до завершения второго в двух случаях:

Второй поток создает файл нулевой длины и завершает работу

Второй поток создает файл длиной 1К и завершает работу

Измерения повторить 10 раз.

3 Алгоритм решения задачи

Алгоритм рассмотрим на примере следующей задачи:

Разработать программу, которая создает в отдельном потоке случайный массив А из N целых чисел в диапазоне от -999 до 999 выводит на экран эти числа. Создание и вывод элементов массива производится через заданное время T. N и T вводятся пользователем до запуска процесса. Массив обрабатывается двумя другими потоками В и С, работающими параллельно с потоком, создающим массив. Все потоки выводят результаты своей работы в текстовые окна, каждый поток в свое окно.

Поток B. Определение среднего расстояния от центра системы координат точек, заданных каждой парой чисел.

Поток C. Вычисление отношений чисел к размаху (разности наибольшего и наименьшего значений), выраженных в процентах.

Общий алгоритм работы программы состоит в создании трех потоков, которые будут работать параллельно.

Первый поток заполняет массив случайным образом и выводит элементы с задержкой T.

Второй поток рассчитывает среднее расстояние от текущей точки (два числа) до центра координат.

Третий поток находит максимальное и минимальное значение элементов массива из уже заполненных потоком A и вычисляет размах.

По мере работы потоков на экран выводятся текущие значения, вычисленные каждым их потоков.

Интерфейс программы представлен на рисунке 1.