
- •Вариант № 1
- •Вариант № 1а
- •Вариант № 1б
- •Вариант № 2
- •Вариант № 3
- •Вариант № 3а
- •Вариант № 3б
- •Вариант № 4
- •Вариант № 5
- •Вариант № 5а
- •Вариант № 5б
- •Вариант № 6
- •Вариант № 7
- •Вариант № 7а
- •Вариант № 7б
- •Вариант № 8
- •Вариант № 9а
- •Вариант № 9б
- •Вариант № 10
- •Вариант № 11
- •Вариант № 11а
- •Вариант № 11б
- •Вариант № 12
- •Вариант № 13
- •Вариант № 13а
- •Вариант № 13б
- •Вариант № 14
- •Вариант № 15
- •Вариант № 15а
- •Вариант № 15б
Вариант № 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.
Определить максимальную длину буфера при различных приоритетах потоков.