Управляемая поточность

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

Примечание

Начиная с .NET Framework 4 многопоточное программирование значительно упростилось благодаря классам System.Threading.Tasks.Parallel и System.Threading.Tasks.Task, Parallel LINQ (PLINQ), классам параллельных коллекций из пространства имен System.Collections.Concurrent и модели программирования, которая вместо потоков использует концепцию задач. Дополнительные сведения см. в разделе Параллельное программирование.

В этом разделе

Основы управляемых потоков
Обзор управляемых потоков и случаев использования нескольких потоков.

Использование потоков и работа с потоками
Описание способов создания, запуска, приостановки, возобновления и отмены потоков.

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

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

Справочник

System.Threading
Содержит классы для использования и синхронизации управляемых потоков.

System.Collections.Concurrent
Содержит классы коллекций, которые могут безопасно использоваться несколькими потоками.

System.Threading.Tasks
Содержит классы для создания и планирования задач параллельной обработки.

Домены приложений
Общие сведения о доменах приложений и их использовании в Common Language Infrastructure.

Асинхронный файловый ввод-вывод
Описывает преимущества и основные операции асинхронного ввода и вывода.

Task-based Asynchronous Pattern (TAP) (Асинхронный шаблон, основанный на задачах (TAP))
Предоставляет общие рекомендации по асинхронному программированию в .NET.

Асинхронный вызов синхронных методов
Описание способов вызова методов в потоках пула потоков с помощью встроенных функций делегатов.

Параллельное программирование
Описание библиотек параллельного программирования, упрощающих использование нескольких потоков в приложениях.

Parallel LINQ (PLINQ)
Описание системы для выполнения запросов в параллельном режиме, позволяющей воспользоваться преимуществами нескольких процессоров.