- •2) Виртуальная память
- •3) Вывод информация в окно с помощью классов из библиотеки mfc.
- •4) Иерархия классов библиотеки mfc.
- •5 Императивное, функциональное и логическое программирование. Сходство и различие.
- •6)Контейнерные классы библиотеки mfc.
- •7)Контекст устройства. Классификация контекстов устройств. Функции работы с контекстами устройств
- •8. Назначение и Классификация ппп
- •9) Направления интеллектуализации пакетов прикладных программ.
- •10.Направления интеллектуализации ппп. Типология задач интеллектуализации.
- •11) Обработка исключений с помощью библиотеки mfc.
- •12)Обработка сообщений в библиотеке mfc
- •13) Общая характеристика ппп. Функциональное и системное наполнение ппп. Типовые проекты ппп.
- •14) Объекты в Win32. Классификация объектов. Функции работы с объектами Win32.
- •16)Организация асинхронного ввода. Сообщения от манипулятора типа «мышь». Сообщения от клавиатуры (см также 33!!!)
- •17 Организация взаимодействия процессов и потоков в Win32.Процессы и потоки в Win32. Приоритеты. Планирование
- •18 Основнные понятия объектно-ориентированного программирования.
- •19) Библиотека stl.
- •21)Полиморфизм. Перегрузка методов и операторов. Виртуальные методы.
- •23) Понятие сериализации.
- •24 Стандартные элементы управления
- •25) Процессы и потоки в Win32. Приоритеты. Планирование процессорного времени. Функции работы с процессами и потоками.
- •26)Архитектура «документ/представление»
- •Глава 20. Документ и его представления
- •Глава 21. Печать и предварительный просмотр документов
- •27) Реализация многопоточных приложений с использованием библиотеки mfc.
- •28 Ресурсы Windows. Способы задания ресурсов Windows-приложения и их использования.
- •29) Системы координат
- •29 Система координат
- •30 Средства реализации взаимного исключения в Win32.
- •31)Стандартные элементы управления и диалоговые панели в библиотеке mfc.
- •32 Структура windows приложения.
- •33) Структура и типология сообщений в Win32. Классиф сообщений. Очередь сооб, ф-ункции работы с ней. (см также 16!)
- •34) Таймер. Назначение, свойства и особенности использования
- •2) Можно заставить Windows пересылать сообщения другой функции этого же приложения.
- •35) Технологии конструирования по
- •36) Шаблоны классов и функций
- •37) Шрифты Типы шрифтов
- •Создание dll
25) Процессы и потоки в Win32. Приоритеты. Планирование процессорного времени. Функции работы с процессами и потоками.
Процесс обычно определяют как экземпляр выполняемой программы. В Win32 процессу отводится 4 Гб адресного пространства. Win32-npoцeccничего не исполняет — просто владеет четырехгигабайтовым адресным пространством, содержащим код и данные ЕХЕ-файла приложения. В это же пространство загружаются код и данные DLL-библиотек, если того требует ЕХЕ-файл. Кроме адресного пространства, процессу принадлежат такие ресурсы, как файлы, динамически выделяемые области памяти и потоки. Ресурсы, создаваемые при жизни процесса, обязательно уничтожаются при его завершении.
Чтобы процесс что-нибудь выполнил, в нем нужно создать поток. Именно потоки отвечают за исполнение кода, содержащегося в адресном пространстве процесса. В принципе, один процесс может владеть несколькими потоками, и тогда они «одновременно» исполняют код в адресном пространстве процесса. Для этого каждый поток должен располагать собственным набором регистров процессора и собственным стеком, а каждый процесс — минимум одним потоком. Чтобы все эти потоки работали, операционная система отводит каждому из них определенное процессорное время. Выделяя потокам отрезки времени (называемые квантами) по принципу карусели, она создает тем самым иллюзию одновременного выполнения потоков.
При создании Win32-npoцeccaпервый (точнее, первичный) поток создается системой автоматически. Далее этот поток может породить другие потоки, те в свою очередь — новые и т. д.
Организация взаимодействия процессов и потоков в Win32.
В среде, позволяющей исполнять несколько потоков одновременно, очень важно синхронизировать их деятельность. Для этого в операционных системах, базирующихся на Win32, предусмотрен целый ряд синхронизирующих объектов. В данной главе мы рассмотрим пять таких объектов: критические секции, объекты-мьютексы, семафоры, события и ожидаемые таймеры. Но существуют и другие, часть из них описана в прочих главах книги.
Здесь Вы познакомитесь с самыми разными способами применения основных синхронизирующих объектов. Во многих случаях они ведут себя почти одинаково, но различия между ними все же есть, и зачастую именно эти различия диктуют выбор того или иного объекта для конкретной задачи.
Все перечисленные объекты, за исключением критических секций, принадлежат ядру. Таким образом, критические секции не управляются низкоуровневыми компонентами операционной системы, и в работе с ними описатели не используются. Критическая секция — простейший синхронизирующий объект, его-то мы и рассмотрим в первую очередь. Но сначала обсудим общую концепцию синхронизации потоков.
Несколько слов о синхронизации потоков
В общем случае поток синхронизирует себя с другим так: он засыпает, и операционная система, не выделяя ему процессорного времени, приостанавливает его выполнение. Но прежде чем заснуть, поток сообщает системе, какое особое событие должно произойти, чтобы его исполнение возобновилось. Как только указанное событие произойдет, поток вновь получит право на выделение ему процессорного времени, и все пойдет своим чередом. Таким образом, отныне выполнение потока синхронизировано с определенным событием.
По ходу дела я покажу, как задается такое событие и как поток, уведомив систему о необходимости слежения за особым событием, «отправляется спать».
