Какие плюсы и минусы у Task и Thread?

Гугл говорит мне что, класс Task это более высокоуровневый, современный и и менее ресурсоемкий способ писать программы с использованием многопоточности и лучше использовать только, а про Thread стоит вообще забыть.

Сегодня был на собеседовании, где люди пишут высокоэффективные, нагружённые решения на С# много лет. И когда я сказал "Task лучше Thread" на меня посмотрели как на идиота.

Видимо я чего-то не понимаю. Подскажите что и для каких целей лучше?
  • Вопрос задан
  • 2368 просмотров
Решения вопроса 1
@Farawa
По сути таск это пул потоков, за которыми не нужно особо следить и ими легче пользоваться, а так же они могут возвращать значения. Их можно использовать, например для запросов на сервер, для разрузки основного потока - например что-то сложное посчитать. Thread то быстрее, но task дает больше возможностей и меньше внимания к себе
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
samodum
@samodum
Какой вопрос - такой и ответ
Простыми словами:

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

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

Task-и так же предоставляют дополнительный фишки как:
- асинхронная модель (async/await),
- учёт количества ядер процессора,
- учёт простоя во время системных вызовов (сеть, файловая система и т.п.)

В любом случае Task-и это лучшее решение.
Ответ написан
Комментировать
@artemt
Full-stack developer
Thread — это абстракция потока. Task — более высокоуровневая абстракция; это Обещание, иначе говоря, некоторая операция, которая завершится в будущем.

И гугл прав, непосредственно Thread в коде сейчас не используют.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы