Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задания к РГР_варианты.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
137.22 Кб
Скачать

Вариант № 8

Написать программу, содержащую два потока. Первый поток генерирует последовательность чисел и помещает их в буфер из Nbuf элементов (с проверкой на свободное место в буфере с использованием механизма семафоров). Второй считывает данные из буфера и выводит их на экран.

Количество элементов Nbuf = 8, вид последовательности – арифметическая прогрессия с разностью 4, длина буфера = 100.

Определить максимальную длину буфера при различных приоритетах потоков.

Вариант № 9

Написать программу Sort, реализующую следующий алгоритм:

1. Зафиксировать время начала Tstrt выполнения программы.

2. Вывести на экран время Tstrt в формате: минуты:секунды: миллисекунды;

3. Для i от 1 до 100 (количество повторений может быть изменено в зависимости от быстродействия процессора) повторять:

  • заполнение массива целых чисел случайными значениями из диапазона 0-1000;

  • зафиксировать текущий момент времени t1;

  • отсортировать массив;

  • зафиксировать текущий момент времени t2;

  • определить время i-той сортировки dti=t2-t1;

4. Определение среднего времени сортировки: dti/100;

5. Вывести на экран среднее время одной сортировки;

6. Зафиксировать время окончания Tend выполнения программы;

7. Вывести на экран время Tend в формате: минуты:секунды: миллисекунды;

Метод сортировки – выборка; направление сортировки – возрастание; количество элементов массива N – 85; количество процессов – 5.

Вариант № 9а

Написать программу Master, создающую два процесса Sort, используя системные вызовы CreateProcess. Необходимо, чтобы каждый процесс имел собственную консоль и класс приоритета NORMAL_PRIORITY_CLASS. Зафиксировать время начала, окончания и длительность сортировки для обоих процессов.

Изменяя приоритеты процессов, как показано ниже, зафиксировать время начала, окончания и длительность сортировки для обоих процессов:

Первый процесс

Второй процесс

NORMAL_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

HIGH_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

IDLE_PRIORITY_CLASS

NORMAL_PRIORITY_CLASS

Вариант № 9б

Написать программу Threads, содержащую процедуру сортировки массива (разработанную при выполнении пункта 1.1), содержащего N/5 элементов и процедуру вывода массива на экран – mass_print. Программа должна выполнять следующие действия:

- Генерировать случайный массив содержащий N/5 элементов;

- используя системные вызовы CreateThread, создать программные потоки sort и mass_print в приостановленном состоянии;

- установить приоритеты потоков в THREAD_PRIORITY_NORMAL, используя системный вызов SetThreadPriority;

- активизировать потоки, используя системные вызовы ResumeThread;

Изменяя приоритеты потоков в разработанной программе в различных сочетаниях фиксировать получаемые результаты.

Вариант № 10

Написать программу, содержащую два потока. Первый поток генерирует последовательность чисел и помещает их в буфер из Nbuf элементов (с проверкой на свободное место в буфере с использованием механизма семафоров). Второй считывает данные из буфера и выводит их на экран.

Количество элементов Nbuf = 6, вид последовательности – натуральные числа, длина буфера = 150.

Определить максимальную длину буфера при различных приоритетах потоков.