Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OC - Лекция 4 / OC - Лекция 4 (C#).ppt
Скачиваний:
25
Добавлен:
21.05.2015
Размер:
221.18 Кб
Скачать

ОПЕРАЦИОННЫЕ СИСТЕМЫ

Вощинская Гильда

Эдгаровна

Домен приложения

Выполнение приложений .NET начинается с запуска .NET Framework. Это процесс со своими потоками, специальными атрибутами и правилами взаимодействия с другими процессами. Приложения .NET выполняются в ОДНОМ процессе. Для этих приложений процесс .NET Framework играет роль, аналогичную роли операционной системы при обеспечении выполнения процессов.

Выполняемые в процессе .NET Framework .NET- приложения также изолируются друг от друга. Средством изоляции .NET-приложений являются домены приложений.

TLS – локальная память потока

Домен приложения

Домен приложения изолирует (на логическом уровне) выполняемые приложения и используемые в его рамках ресурсы. В процессе .NET Framework может выполняться множества доменов приложений. При этом в рамках одного домена может выполняться множество потоков.

В пространстве имен System.Threading

объявляются типы, которые используются для создания многопоточных приложений.

Interlocked

Monitor

Mutex

Thread

Синхронизация доступа к общим данным

Синхронизация потоковых объектов при

помощи блокировок и управления ожиданием

Синхронизация ПРОЦЕССОВ

Собственно класс потока, работающего в среде выполнения .NET. В текущем домене

приложения с помощью этого класса

создаются новые потоки

ThreadPool

Класс, предоставляющий средства

 

 

управления набором взаимосвязанных

 

 

потоков

Обзор пространства имен System.Threading

ThreadStart

Класс-делегат для метода, который должен

 

 

быть выполнен перед запуском потока

 

Timer

Вариант класса-делегата, который

 

 

 

обеспечивает передачу управления

 

 

некоторой функции-члену (неважно какого

 

 

класса!) в указанное время. Сама процедура

 

 

ожидания выполняется потоком в пуле

 

 

потоков

TimerCallback

WaitHandle

WaitCallback

Класс-делегат для объектов класса Timer

Объекты – представители этого класса

являются объектами синхронизации

(обеспечивают многократное ожидание).

Делегат, представляющий методы для

рабочих элементов (объектов) класса

ThreadPool

Класс Thread. Общая характеристика

Thread-класс представляет управляемые потоки: создает потоки

и управляет ими — устанавливает приоритет и статус потоков.

Это объектная оболочка вокруг определенного этапа выполнения программы внутри домена приложения.

Статические члены класса Thread

CurrentThread

Sleep()

Свойство. Только для чтения. Возвращает ссылку на поток, выполняемый в настоящее

время

Блокировка выполнения потока на

определенное время

Нестатические члены класса Thread

IsAlive

Свойство. Если поток запущен, то true

IsBackground

Свойство. Работа в фоновом режиме. GC

 

работает как фоновый поток

Name

Priority

Свойство. Дружественное текстовое имя

потока. Если поток никак не назван –

значение свойства установлено в null. Поток

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

Свойство. Значение приоритета потока. Область значений – значения перечисления

ThreadPriority

ThreadState

Свойство. Состояние потока. Область

 

 

значений – значения перечисления

 

 

ThreadState

Interrupt()

Нестатические члены

Прерывание работы текущего потока

 

 

 

Join()

Ожидание появления другого потока (или

 

 

определенного промежутка времени) с

 

 

последующим завершением

Resume()

Start()

Suspend()

Abort()

Возобновление выполнения потока после

приостановки

Начало выполнения ранее созданного потока,

представленного делегатом класса ThreadStart Приостановка выполнения потока

Завершение выполнения потока посредством генерации исключения TreadAbortException в

останавливаемом потоке. Это исключение

следует перехватывать для продолжения выполнения оставшихся потоков приложения.

Создание потока

Чтобы создать поток, необходимо создать объект типа Thread. В классе Thread определен следующий конструктор:

public Thread( ThreadStart entryPoint).

Тип ThreadStart – это делегат, определенный в среде

.NET Framework:

public delegate void ThreadStart(). Выполнение созданного потока начнется, когда будет вызван метод Start(). Его определение :

public void Start().

Выполнение потока завершится, когда завершится метод, заданный параметром entryPoint. Если вызвать метод Start() для запущенного на выполнение потока, будет сгенерировано исключение ThreadStartException.

Приоритеты потоков

Среда .NET Framework определяет два типа потоков: Высокоприоритетные и фоновые. Различие между ними в том, что процесс не завершится, пока не завершится выполнение всех его высокоприоритетных потоков, после этого фоновые потоки заканчиваются автоматически.

По умолчанию поток создается как высокоприоритетный. Сделать его фоновым можно, установив свойство

public bool IsBackground{ get;set} в значение true. Каждый поток имеет определенный приоритет. Он задается значениями перечисления ThreadPriority: ThreadPriority.Highest

ThreadPriority.AboveNormal ThreadPriority.Normal // по умолчанию ThreadPriority.BelowNormal ThreadPriority.Lowest .

Пример ThreadPriority