Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №9
динамически подключаемые библиотеки (DLL) И потоковая многозадачность в Win32
Цель работы: изучить возможности создания программ с использованием динамически подключаемых библиотек и организации многопоточного режима выполнения программ в Win32.
Ход работы
При подготовке к лабораторной работе самостоятельно на основе материалов лекций, рекомендованной литературы, справочной системы Win32 API, SDK и MSDN изучить технологию и средства создания и использования динамически подключаемых библиотек (DLL), создания потоков в Win32 а также основных способов синхронизации потоков и обмена данными между потоками. При этом изучить назначение таких функций и соответствующие им структуры данных:
3) для синхронизации потоков: WaitForSingleObject(),WaitForMultiplyObjects().
Задание
1. Создать динамическую библиотеку, содержащую рабочую функцию потока, которая:
а) создает окно с кнопками «+», «-», «Уведомить» и «Завершить»;
б) выводит в это окно информацию о времени запуска и продолжительности её работы;
в) при нажатии на кнопку «+» инкрементирует 1 раз в секунду заданную переменную;
г) при нажатии на кнопку «-» декрементирует 1 раз в секунду заданную переменную;
д) отображает значение глобальной переменной в главном окне;
е) при нажатии на кнопку «Уведомить» создает сообщение;
ж) при нажатии на кнопку «Завершить» завершает поток.
2. Создать основную программу, которая должна выполнять следующие функции:
а) предотвращать запуск второй копии программы с использованием мьютексов;
б) содержать главное меню с пунктом «Потоки» и подменю «Поток №1» … «Поток №<n>». Каждый из пунктов «Поток №<i>» должен содержать пункты «Создать», «Запустить», «Приостановить», «Завершить», при выборе которых программа должна выполнять соответствующие действия и отражать изменения состояния потоков в меню;
в) ограничивать количество запускаемых потоков с использованием семафоров.
г) при загрузке программы запустить на выполнение 2 потока из DLL;
д) защищать изменение глобальной переменной с помощью критических секций;
е) получать уведомления от потоков, и выдавать при его получении окно сообщений (MessageBox);
ж) завершаться при завершении всех потоков.
Литература
1. Рихтер Дж. Windows для профессионалов: Программирование для Windows 95 и Windows NT 4 на базе Win32 API / Пер. с англ. М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1997. 712 c.
2. Финогенов К.Г. Win32. Основы программирования. - М.: ДИАЛОГ-МИФИ, 2002. - 416 с.
3. Румянцев П.В. Азбука программирования в Win32 API.
4. Электронный ресурс: www.google.com.