Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен з комп. арх..doc
Скачиваний:
4
Добавлен:
17.09.2019
Размер:
449.02 Кб
Скачать

8. Багатопоточне програмування засобами .Net. Структура процесу ос Windows. Клас Thread.

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

Потоки имеют следующие свойства.

· Потоки позволяют программе выполнять параллельную обработку.

· Пространство имен .NET Framework System.Threading упрощает использование потоков.

· Потоки используют одни и те же ресурсы приложения.

По умолчанию программа на языке C# имеет один поток. Однако параллельно основному потоку могут создаваться и использоваться вспомогательные потоки (рабочие потоки).

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

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

Обычно рабочие потоки используются для выполнения трудоемких или срочных задач, для которых не требуется большое количество ресурсов, используемых другими потоками. Естественно, некоторые используемые программой ресурсы должны быть доступны для нескольких потоков. В этих случаях пространство имен System.Threading предоставляет классы для синхронизации потоков. Эти классы включают Mutex, Monitor, Interlocked,AutoResetEvent и ManualResetEvent.

Thread – класс который создает и контролирует поток, задает приоритет и возвращает статус.

Свойства

CurrentThread Возвращает выполняющийся в данный момент поток.

IsAlive Возвращает значение, показывающее статус выполнения текущего потока.

IsThreadPoolThread Возвращает значение, показывающее, принадлежит ли поток к группе управляемых потоков.

Name Получает или задает имя потока.

Priority Получает или задает значение, указывающее на планируемый приоритет потока.

ThreadState Возвращает значение, содержащее состояния текущего потока.

Методы

Abort() Вызывает исключение ThreadAbortException в вызвавшем его потоке для того, чтобы начать процесс завершения потока. Вызов данного метода обычно завершает поток.

Equals(Object) Определяет, равен ли заданный объект Object текущему объекту Object. Finalize Освобождает все ресурсы, используемые классом CriticalFinalizerObject

GetHashCode Возвращает хэш-код текущего потока.

GetType Возвращает объект Type для текущего экземпляра.

Interrupt Прерывает работу потока, находящегося в состоянии WaitSleepJoin.

Join() Блокирует вызывающий поток до завершения потока, продолжая отправлять стандартные сообщения COM и SendMessage.

ResetAbort Отменяет метод Abort, запрошенный для текущего потока.

Sleep(Int32) Приостанавливает работу текущего потока на заданное время.

Start() Вынуждает ОС изменить состояние текущего экземпляра на ThreadState.Running.

ToString Возвращение строки, представляющей текущий объект.