В чем разница между Task и Thread?

Механизм правил является победой на настраиваемом приложении, где Вы не хотите должными быть делать пользовательские сборки, если его можно избежать. Они также хороши в централизации больших оснований правил и алгоритмов как , Сеть эффективна для того, чтобы быстро соответствовать против больших наборов правила.

25
задан Raghav 9 November 2011 в 16:58
поделиться

3 ответа

В чем разница между задачей и потоком?

Предположим, вы управляете компанией по доставке книг. У вас четыре машины и четыре водителя. Автомобиль - это нить, водитель - это процессор, а доставка книг - задача. Проблема, с которой вы сталкиваетесь, заключается в том, как эффективно планировать водителей и автомобили, чтобы задачи выполнялись как можно быстрее.

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

Идея основанного на задачах парализма состоит в том, чтобы разбить работу на небольших задач, которые могут дать результаты в будущем , а затем эффективно распределить ровно столько потоков так как есть процессоры, чтобы вы не тратили время на переключение контекста. На практике это обычно не очень хорошо, но это идея.

, какая из них лучше, задача или тема?

На вопрос нельзя ответить, потому что он не имеет никакого смысла. Что лучше: книга для доставки клиенту или автомобиль для доставки? Автомобиль - это устройство, которое можно использовать для доставки книги; эти две вещи не являются вещами, которые вы можете разумно описать как «лучше» или «хуже», чем другие. Это все равно что спросить «что лучше, дырка или дрель?»

60
ответ дан 28 November 2019 в 17:45
поделиться

Вот некоторые отличия:

  • Task по умолчанию использует пул потоков , в то время как непосредственное использование Thread потребует создания нового потока.
  • Task будут обрабатывать исключения и результаты, поэтому использовать его будет проще.
  • Task может поддерживать отмену при использовании потоков, вы должны реализовать это самостоятельно.
6
ответ дан 28 November 2019 в 17:45
поделиться

Согласно справочной документации MSDN :

Параллельная библиотека задач (TPL) - это набор открытых типов и API-интерфейсов в System.Threading и System.Threading. Пространства имен задач в .NET Framework версии 4. Целью TPL является повышение производительности труда разработчиков за счет упрощения процесса добавления параллелизма и параллелизма в приложения. TPL динамически масштабирует степень параллелизма, чтобы наиболее эффективно использовать все доступные процессоры. Кроме того, TPL обрабатывает разделение работы, планирование потоков в ThreadPool, поддержку отмены, управление состоянием и другие подробности низкого уровня. Используя TPL, вы можете максимизировать производительность своего кода, сосредотачиваясь на работе, для которой предназначена ваша программа.

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

4
ответ дан 28 November 2019 в 17:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: