Потоковое и асинхронное программирование

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

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

  • Отправка рабочих элементов, управление приоритетом и отмена рабочих элементов.
  • Планирование рабочих элементов с помощью таймеров и периодических таймеров.
  • Отложите ресурсы для критически важных рабочих элементов.
  • Запустите рабочие элементы в ответ на именованные события и семафоры.

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

Тема Описание
Рекомендации по использованию пула потоков Рекомендации по работе с пулом потоков.
Вызов асинхронных API в C# или Visual Basic Использование асинхронных API в C# или Visual Basic в приложении Windows.
Создание периодического рабочего элемента Как создать рабочий элемент, повторяющийся периодически.
Отправить рабочий элемент в пул потоков Как выполнить работу в отдельном потоке, поместив задачу в пул потоков.
Отправка рабочего элемента с помощью таймера Как создать рабочий элемент, который выполняется после истечения таймера.