Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ТВП ЛР A5.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
611.84 Кб
Скачать

Удаление критической секции

Если критическая секция больше не нужна, ее нужно удалить при помощи функции DeleteCriticalSection, как это показано ниже:

DeleteCriticalSection(scsWindowPaint);

При этом освобождаются все ресурсы, созданные операционной системой для критической секции.

Вход в критическую секцию и выход из нее

Две основные операции, выполняемые задачами над критическими секциями, - это вход в критическую секцию и выход из критической секции.

Первая операция выполняется при помощи функции EnterCriticalSection, вторая - при помощи функции LeaveCriticalSection. Эти функции, не возвращающие никакого значения, всегда используются в паре, как это показано в следующем фрагменте исходного текста программы:

EnterCriticalSection(&csWindowPaint);

hdc=BeginPaint(hWnd,&ps);

GetClientRect(hWnd,&rc);

DrawText(hdc,"Text",-1,&rc,

DT_SINGLELINE|DT_CENTER|DT_VCENTER); EndPaint(hWnd,&ps);

LeaveCriticalSection(&csWindowPaint);

В качестве единственного параметра функциям EnterCriticalSection и LeaveCriticalSection необходимо передать адрес структуры типа CRITICAL_SECTION, проинициализиро-ванной предварительно функцией InitializeCriticalSection.

Критические секции работают следующим образом. Если одна задача вошла в критическую секцию, но еще не вышла из нее, то при попытке других задач войти в ту же самую критическую секцию они будут переведены в состояние ожидания. Задачи пробудут в этом состоянии до тех пор, пока задача, которая вошла в критическую секцию, не выйдет из нее.

Таким образом, гарантируется, что фрагмент кода, заключенный между вызовами функций EnterCriticalSection и LeaveCriticalSection, будет выполняться задачами последовательно, если все они работают с одной и той же критической секцией.

  1. Номер варианта

Последняя цифра зачетной книжки

0

1

2

3

4

5

6

7

8

9

Номер варианта

4

6

3

7

5

8

1

9

2

10

  1. Варианты заданий

Номер варианта

Номер

серии

Приоритет задач

1

1

А

Б

В

Г

Д

2

Б

Б

В

Г

Д

3

В

В

Г

Д

Е

4

Г

Д

Е

Е

Ж

5

Д

Е

Е

Ж

Ж

2

1

А

А

Б

В

Г

2

Б

В

Б

Г

Д

3

В

В

Б

Б

Д

4

В

Е

Е

Д

Ж

5

Ж

Д

Е

Ж

Е

3

1

Г

Б

А

А

Б

2

В

Д

Б

Г

Д

3

В

В

Б

Б

А

4

Г

Д

Е

Ж

Е

5

Е

Ж

Д

Ж

Е

4

1

А

Г

Д

А

Б

2

Б

В

Б

В

Д

3

В

Г

Д

В

Б

4

Е

Ж

Ж

В

Е

5

Е

Ж

Ж

Ж

Е

5

1

А

Г

Б

Д

А

2

Б

В

Д

В

Г

3

В

Д

Г

В

Б

4

Д

Е

Е

Ж

Г

5

Ж

Ж

Е

Е

Д

6

1

Б

А

Д

А

В

2

В

Б

Г

Д

Д

3

В

Б

В

Г

Д

4

В

Г

Е

Е

Ж

5

Д

Е

Е

Ж

Ж

7

1

В

А

Г

Д

Б

2

Д

Г

Д

Б

В

3

Е

Е

Ж

Е

Д

4

Б

В

В

Д

Г

5

Ж

Ж

Е

Е

Д

8

1

Б

В

Д

А

А

2

Г

В

Б

Д

Б

3

Г

В

В

Д

В

4

Е

Е

Д

Д

Д

5

Д

Е

Ж

Ж

Е

9

1

Д

А

А

Б

В

2

Б

Д

Д

В

Г

3

В

Б

В

Д

В

4

Е

Е

Д

Г

Г

5

Ж

Е

Ж

Ж

Е

10

1

Б

Д

А

А

Г

2

Г

Б

В

Д

Д

3

В

В

В

Г

Г

4

Д

Д

Е

Е

Е

5

Ж

Е

Д

Е

Ж

где

Код

Приоритет

А

THREAD_PRIORITY_IDLE

Б

THREAD_PRIORITY_HIGHEST

В

THREAD_PRIORITY_ABOVE_NORMAL

Г

THREAD_PRIORITY_NORMAL

Д

THREAD_PRIORITY_BELOW_NORMAL

Е

THREAD_PRIORITY_LOWEST

Ж

THREAD_PRIORITY_TIME_CRITICAL

Лабораторная работа №2

«Синхронизация задач в операционных системах

Microsoft Windows»

  1. Цель занятия

Изучение способов синхронизации параллельно выполняющихся задач в операционных системах Microsoft Windows. Доработка учебного мультизадачного приложения.

  1. Литература

  2. Фролов А.В., Фролов Г.В. Программирование для Windows NT. – М: ДИАЛОГ-МИФИ, 1996. – 272 с. – (Библиотека системного программиста; Т.26).

  3. Фролов А.В., Фролов Г.В. Операционная система Windows 95 для программиста. – М: ДИАЛОГ-МИФИ, 1996. – (Библиотека системного программиста; Т.22).

  4. Фролов А.В., Фролов Г.В. Графический интерфейс GDI в Microsoft Windows. – М: ДИАЛОГ-МИФИ, 1994. – (Библиотека системного программиста; Т.14).

  5. Саймон Р. Windows 2000 API Энциклопедия. – М: ДиаСофт, 2002.- 1088 с.

  6. Неббет Г. Справочник по базовым функциям API Windows NT/2000. – М: Вильямс, 2002. – 528 с.

3. Выполнение работы

  • Изучить:

    • способ синхронизации задач с помощью объектов – событие, Mutex, семафоров и ожидаемых таймеров;

    • способы построения MDI-приложений;

  • разработать алгоритм работы учебного мультизадачного приложения;

  • доработать, созданное на лабораторной работе №1 учебное приложение;

  • составить отчет по проделанной работе в соответствии с требованиями, предъявляемыми в пункте 6 настоящего пособия.