-It кажется, что класс задач дают нам возможность использовать на нескольких процессорах в системе.
-если потоки будут выполняться или выполняться на нескольких ядрах, то что же такого особенного в Параллелизме задач?
Класс Task
- это небольшая, но важная часть TPL (параллельная библиотека задач). TPL - это абстракция высокого уровня, поэтому вам не нужно напрямую работать с потоками. Он инкапсулирует и скрывает большую часть оттока, которую вы должны реализовать для любого приличного многопоточного приложения.
Задачи не вводят никаких новых функциональных возможностей, которые вы не могли реализовать самостоятельно, per se (что ядром ваших вопросов, я считаю). Они могут быть синхронными или асинхронными - если они асинхронны, они либо используют внутренний класс Thread
, либо IOCP.
Некоторые из вопросов, освещаемых TPL являются:
- Rethrow исключения из дочернего потока на вызывающем потоке.
- Асинхронный код (запуск нить -> выполнить произвольный код во время ожидания для дочернего потока -> резюме, когда ребенок нить более) выглядит, как если бы это были синхронными, что значительно улучшает читаемость и ремонтопригодность
- Simpler нити дезактивации (с использованием
CancellationTokenSource
)
- Параллельные запросы/обработки данных с использованием PLINQ или
Parallel
класса
- Асинхронный рабочие процессы с использованием TPL DataFlow
Это, вероятно, O/S зависима и не определяется рамками .Net. Было бы хорошо знать наверняка. – Polyfun
Имейте в виду, что Задачи по умолчанию предназначены для действительно быстрых задач (менее 200 мс); поэтому параллелизм с параллельным вычислением/параллелизм не должен быть большим требованием. Если вы * хотите * хотеть иметь параллельные параллельные/параллельные, длительные задачи, связанные с вычислением, предпочитайте Task.Run над TaskFactory.StartNew и будьте в курсе использования перегрузки, которая принимает 'TaskCreationOptions' и использует' TaskCreationOptions.LongRunning'. В противном случае могут возникнуть неблагоприятные последствия для пула потоков, которые могут привести к сбою в параллелизме. –
Возможно, связано: http://stackoverflow.com/q/12328751 – stakx