Книга: Системное программирование в среде Windows
Основные сведения о потоках
Основные сведения о потоках
В предыдущей главе на рис. 6.1 было показано, каким образом обеспечивается существование потоков в среде процесса. Использование потоков на примере многопоточного сервера, способного обрабатывать запросы одновременно нескольких клиентов, иллюстрирует рис. 7.1; каждому клиенту отведен поток. Эта модель будет реализована в главе 11.
Потоки, принадлежащие одному процессу, разделяют общие данные и код, поэтому очень важно, чтобы каждый поток имел также собственную область памяти, относящуюся только к нему. В Windows удовлетворение этого требования обеспечивается несколькими способами.
• У каждого потока имеется собственный стек, который она использует при вызове функций и обработке некоторых данных.
• При создании потока вызывающий процесс может передать ему аргумент (Arg на рис. 7.1), который обычно является указателем. На практике этот аргумент помещается в стек потока.
• Каждый поток может распределять индексы собственных локальных областей хранения (Thread Local Storage, TLS), а также считывать и устанавливать значения TLS. TLS, описанные далее, предоставляют в распоряжение потоков небольшие массивы данных, и каждый из потоков может обращаться к собственной TLS. Одним из преимуществ TLS является то, что они обеспечивают защиту данных, принадлежащих одному потоку, от воздействия со стороны других потоков.
Рис. 7.1. Потоки в среде сервера
Аргумент потока и TLS могут использоваться для указания произвольной структуры данных. Применительно к представленному на рис. 7.1 примеру сервера эта структура может содержать текущий запрос и отклик потока на этот запрос, а также предоставлять рабочую память для других целей.
В случае SMP-систем Windows обеспечивает параллельное выполнение различных потоков, в том числе и принадлежащих одному и тому же процессу, на разных процессорах. Правильное использование этой возможности позволяет повысить производительность, однако, как будет показано в двух следующих главах, в результате непродуманных действий без заранее определенной стратегии использования нескольких процессоров производительность SMP-систем может даже ухудшиться по сравнению с однопроцессорными системами.
- Обзор потоков
- Основные сведения о потоках
- Управление потоками
- Использование библиотеки С впотоках
- Пример: многопоточный поиск контекста
- Потоки и производительность
- Модель "хозяин/рабочий" и другие модели многопоточных приложений
- Пример: применение принципа "разделяй и властвуй" для решения задачи сортировки слиянием в SMP-системах
- Производительность
- Локальные области хранения потоков
- Приоритеты процессов и потоков и планирование выполнения
- Состояния потоков
- Возможные ловушки и распространенные ошибки
- Ожидание в течение конечного интервала времени
- Облегченные потоки
- Резюме
- Упражнения
- ГЛАВА 7 Потоки и планирование выполнения
- Потоки и производительность
- Основные сведения
- 5. УСИЛИТЕЛИ ПОСТОЯННОГО ТОКА
- Основные параметры ЭЛТ-мониторов
- Основные "рычаги" управления производительностью
- 1.1. Информатика. Предмет информатики. Основные задачи информатики
- 11 Основные возражения и ответы на них
- 2.5. Разработка технического задания на проведение детального анализа рынка при работе над инновационным проектом. Основ...
- 3.1. Основные нормативные руководящие документы, касающиеся государственной тайны
- 11.4. Информационная безопасность и ее основные компоненты
- Основные неисправности приводов CD