Автор работы: Пользователь скрыл имя, 31 Марта 2013 в 10:40, контрольная работа
Преимущества использования потоков
1. Упрощение программы в некоторых случаях, за счет использования общего адресного пространства.
2. Быстрота создания потока, по сравнению с процессом, примерно в 100 раз.
3. Повышение производительности самой программы, т.к. есть возможность одновременно выполнять вычисления на процессоре и операцию ввода/вывода. Пример: текстовый редактор с тремя потоками может одновременно взаимодействовать с пользователем, форматировать текст и записывать на диск резервную копию.
1. Общие характеристики потоков……………………………………….….3
2. Реализация потоков.………………………………………………………..5
3. Создание потоков………………………………………………………..…7
4. Завершение потока………………………………………………………..11
5. Заключение……………………………………………………………..…15
6. Список использованной литературы и источников………………...…..17
BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
Параметры:
Возвращаемое значение: если выполнение завершения произошло удачно, то TRUE, иначе - FALSE.
При завершении потока выполняются следующие действия.
Момент выборки потока на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в данный момент потоков и процессов.
По сравнению с Windows NT 4 в интерфейс Win32 API было введено, новое понятие волокон. Под волокном (fiber) понимается упрощенный поток, выполнение которого планируется в приложении вручную. Волокна выполняются в контексте потоков, в которых планируется их применение, и допускают полную их идентификацию с потоками.
Суть: потоки работают в режиме пользователя, но при системных вызовах переключаются в режим ядра. Из-за переключения в режим ядра и обратно, очень замедляется работа системы. Поэтому было введено понятие волокна.
В каждом потоке может быть
запланировано несколько
Благодаря тому, что волокно
допускает сходство с родительским
потоком, оно разделяет вместе с
потоком общую локальную
Основное отличие между потоками и волокнами состоит в том, что волокна не планируются с вытеснением. Волокно должно планироваться в приложении путем переключения на него из другого волокна. Однако система все-таки планирует потоки, которые создают волокна, поэтому поток, который в настоящий момент выполняет волокно, может подлежать вытеснению. Волокно возобновляет свое выполнение, когда возобновляется выполнение его потока.
Перед планированием в приложении первого волокна для создания области, в которой сохраняется информация состояния волокна, вызывается функция ConvertThreadToFiber(). При этом поток превращается в выполняемое в настоящий момент волокно. К хранимой информации состояния этого волокна относятся также и данные, переданные функции ConvertThreadToFiber() в ее аргументе.
LPVOID ConvertThreadToFiber (LPVOID lpParameter).
Параметры:
Для создания волокон в приложении применяется функция CreateFiber(). LPVOID CreateFiber (DWORD dwStackSize, LPFIBER_START_ROUTINE lpStartAdress, LPVOID lpParameter)
Параметры:
Параметры:
В функции SwitchToFiber() используется адрес волокна, созданного другим потоком, причем этот адрес получен другим потоком в результате обращения к CreateFiber(). После того как поток завершит выполнение своего волокна, она должна вызвать функцию DeteteFiber(), чтобы очистить данные, созданные для волокна. Синтаксис функции следующий:
VOID DeteteFiber (LPVOID lpFiber),
Параметры:
ЗАКЛЮЧЕНИЕ
Информационных поток - это независимый путь выполнения внутри процесса, разделяющий вместе с процессом общее адресное пространство, код и глобальные данные.
Преимущества использования потоков
1. Упрощение программы
в некоторых случаях, за счет
использования общего
2. Быстрота создания потока,
по сравнению с процессом,
3. Повышение производительности
самой программы, т.к. есть
Создаются и уничтожаются потоки исполнительной системы Windows диспетчером объектов. Диспетчер процессов определяет тело объекта-потока и сервисы, используемые для работы с потоками после их создания.
Для создания потока требуется следующая информация:
Потоки могут быть завершены двумя способами - вызовом функции ExitThread() и обращением к функции TerminateThread(). Функция ExitThread() используется для нормального завершения потока. Естественно, что она вызывается изнутри потока. Параметр: dwExitCode - код завершения этой функции. Функцию TerminateThread() следует вызывать только в крайних случаях, когда поток завис, и ни на какие действия пользователя не реагирует.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ И ИСТОЧНИКОВ