Thread and Task

   
Thread PoolПул потоков

Одна из задач пула - более оптимальное использование потоков, переиспользование.
Операция создания потока является относительно дорогой, поэтому с точки зрения производительности более выгодно может быть переиспользовать один и тот же поток, последовательно выполняя несколько Task (задач).

ThreadПоток исполнения

Поток исполнения в приложении.

Если несколько потоков взаимодействуют с одним и тем-же объектом параллельно, может возникнуть необходимость использования конструкций для синхронизации (Многопоточность и асинхронность).
Любой объект можно оценить с точки зрения Thread-Safe (потокобезопасности). Например безопасен на только на чтение, но не на запись.

TaskЗадача

Логическая задача, которая может выполниться в Thread (потоке) из Thread Pool (пула потоков).
Для Task (задачи), которые будет выполняться длительное время стоит использовать метку.

c# Task API является более предпочтительным перед Thread API.
(При этом есть специфичные настройки, например возможность пометить задачу как долго выполняющуюся, чтобы пул потоков учитывал это в своей работе).


Материалы:


Потоки переднего плана и фоновые потоки

  
Потоки переднего плана (foreground threads)Приложение не будет остановлено, пока живы потоки переднего плана (Если это не экстренное завершение).
Фоновые потоки (background threads)

Наличие запущенных фоновых потоков не препятствует завершению приложения.

Task запущенный на обработку через API  Task.Run(...) скорее всего попадет на выполнение в фоновый поток.

//Проверка параметра фонового потока
Thread.CurrentThread.IsBackground

Потоки переднего плана и фоновые потоки
https://professorweb.ru/my/csharp/thread_and_files/1/1_6.php


Теги: