Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
НА ЭГЗО.doc
Скачиваний:
19
Добавлен:
17.09.2019
Размер:
2.16 Mб
Скачать

16. Состояния потоков

Visual Studio 2008

Эта тема еще не получила оценку - Оценить эту тему

Обновлен: Ноябрь 2007

Свойство ThreadState предоставляет информацию о состоянии потока. Поскольку потоки могут быть в более чем одном состоянии в любой момент времени, значение, хранящееся в свойстве ThreadState, может быть сочетанием значений перечисления ThreadState. Например, если поток заблокируется по вызову метода Wait и другой поток вызывает метод Abortтого же потока, то поток находится в состояниях WaitSleepJoin и AbortRequested одновременно.

Изменение состояний потока

После запуска потока можно вызывать его методы для изменения состояния потока. Например, можно остановить поток на фиксированное число миллисекунд, вызвав методThread.Sleep. Метод Sleep принимает в качестве параметра период времени в миллисекундах, в течение которого поток будет заблокирован.

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

Поток можно также приостановить, вызвав метод Suspend. Если поток вызывает метод Suspend для себя, вызов блокируется до тех пор, пока поток не будет восстановлен другим потоком с помощью вызова Resume. Когда поток вызывает метод Suspend для другого потока, вызов не блокируется, и это приводит к приостановке другого потока. Вызов методаResume выводит другой поток из заблокированного состояния и возобновляет его выполнение. В отличие от метода Sleep метод Suspend не останавливает поток немедленно; поток продолжает выполняться, пока среда выполнения не определит, что достигнута безопасная точка.

Метод Abort останавливает выполняющийся поток путем вызова исключения ThreadAbortException, которое приводит к прекращению потока.

Для получения подробной информации об этих методах см. раздел Thread.

См. также

17. Доступ любой задачи к центральному процессу осуществляется через системные программы планировщика, диспетчера. Планирование это организация процессов в некоторую последовательность. Планировщик – программа ответственная за постановку  процессов в очередь. Диспетчер – это программа, которая выбирает процесс из очереди, переводит его в активное состояние. Планирование диспетчеризации сокращенно называется планирование.

Планирование процессов включает в себя решение следующих основных задач:

1)      Определение момента времени для смены определяемого процесса;

2)      Вывод процесса на выполнения из очереди готовых процессов;

3)      Переключение контекстов в процессы;

Первые две задачи решаются программными средствами, последняя – незначительной степени аппарата. Существует множество различных алгоритмов планирования процессов, рассмотрим подробнее две группы, наиболее чаще встречающихся алгоритмов:

1)      Алгоритмы, основанные на квантование;

2)      Алгоритмы, основанные на приоритетах.

В соответствие с алгоритмами основанные на квантование, смена активного процесса происходит если:

1)      Исчерпан квант процессорного времени;

2)      Процесс завершился и покинул систему;

3)      Процесс перешел в состояние ожидания;

4)      Произошла ошибка.

Процесс, который исчерпал свой квант, переводится в состояние готовность и ожидает, когда ему будет предоставлен новый квант процессорного времени. На дополнение в соответствие с определенными правилами выбирается новый процесс из очереди готовых, таким образом, не один процесс не занимает процессор на долго. Поэтому квантование широко используется в современной ОС.

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

18.---