Найти тему
.Net Review

Многопоточность в C#. Часть 1. Основы.

Оглавление

Многопоточность — свойство платформы (например, операционной системы, виртуальной машины и т. д.) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. Подробнее об основах работы с потоками в этой статье.

Для чего это нужно?

Сутью многопоточности является квазимногозадачность на уровне одного исполняемого процесса, то есть все потоки выполняются в адресном пространстве процесса. Кроме этого, все потоки процесса имеют не только общее адресное пространство, но и общие дескрипторы файлов. Выполняющийся процесс имеет как минимум один (главный) поток. Благодаря такой системе, мы можем грубо говоря одновременно реализовывать несколько задач. Пример: загрузка данных во время работы пользователя с интерфейсом, без многопоточности эти действия выполнялись бы последовательно и интерфейс блокировался.

Реализация в C#

-2

Для работы с потоками в C# реализован функционал в пространстве имен System.Threading. Однако данное решение на данный момент не актуально, т.к. Microsoft создала улучшенный инструмент для работы с многопоточностью и параллельным программированием: System.Threading.Tasks. Далее будем работать с этой библиотекой.

Возможности Task

  • Асинхронное программирование. Удобная реализация работы с функционалом, который необходимо вынести из основного потока.
  • Текущее состояние. У Task есть свойства получения текущего состояния.
  • Вложенные задачи. Возможность запускать новую задачу из текущей.
  • Задачи продолжения. Методы продолжения после выполнения текущего Task.
  • Параллельный запуск. Возможность запустить список задач одновременно (параллельно).
  • Возможность отмены. Реализована работа с CancellationToken.

Подробнее о работе Task с примерами в следующих статьях.

Телеграмм канал: https://t.me/dotnetreview

Источники: Многопоточность Wiki
Наука
7 млн интересуются