close

Вход

Забыли?

вход по аккаунту

?

Лабораторная работа 7 (2)

код для вставкиСкачать
Лабораторная работа № 7
Приоритеты потоков
Цель работы: исследовать значение приоритета потоков для их синхронизации в системе с псевдопараллельным режимом работы.
Задание1.
Разработайте программу сортировки чисел. Программа должна удовлетворять следующим требованиям:
- Должны быть реализованы процедуры сортировки пузырьком, вставкой, и быстрой сортировки.
- Размер выборки для сортировки должен задаваться пользователем.
- Должен быть реализован режим отрисовки процесса сортировки.
- Пользователь должен иметь возможность замедлять и останавливать сортировку.
- Все три сортировки должны работать одновременно и над одинаковым набором входных данных. - Каждая сортировка должна отрисовываться в отдельном окне.
Для отрисовки сортировки можно использовать вызов SetPixel: перед обменом местами двух элементов сначала стираем соответствующие точки, закрашивая их цветом фона, а после обмена - рисуем заново. Вызов SetPixel также играет роль небольшой задержки во времени.
Поскольку размер выборки будет меняться, целесообразно использовать динамические массивы. Для этого используйте операторы new и delete. Для задания начальных значений используйте генератор случайных чисел rand(): он возвращает значение от 0 до MAX_RAND. Как создать новое окно? Окно проще всего создать на основе шаблона - ресурса окна. Для добавления нового шаблона выберите вкладку Resources, выберите раздел Dialog, кликните на нем правой кнопкой мыша и выберите New dialog. Добавится новый шаблон диалога с идентификатором IDD_DIALOGxxx, где ххх - некоторое число.
Теперь в основной программе надо объявить переменную типа Cdialog, и вызвать метод Create для его инициализации, а затем - метод Show для отображения на экране:
CDialog MyDialog;
MyDialog.Create(идентификатор ресурса диалога);
MyDialog.Show(SW_SHOW);
Чтобы окно не исчезло сразу после выхода из функции, переменную MyDialog надо сделать глобальной, а метод Create вызывать в функции OnInitDialog главного окна.
Для изменения размера окна и положения на экране используйте метод MoveWindow.
Примерный вид интерфейса показан на рисунке:
Задание 2.
Установите приоритет каждого потока. Приоритет потока устанавливается при помощи функции SetThreadPriority:
SetThreadPriority(дескриптор_потока, величина_приоритета);
Дескриптор потока - величина типа HANDLE, возвращаемая при вызове CreateThread. Величина приоритета может принимать значения 0, 1, 2, 15.
Попробуйте определить самостоятельно, что происходит при установке того или иного приоритета. Попробуйте также определить значения приоритета, вызывающие синхронное окончание работы сортировок. 
Документ
Категория
Рефераты
Просмотров
4
Размер файла
32 Кб
Теги
работа, лабораторная
1/--страниц
Пожаловаться на содержимое документа