Расчет для task1
будет выполняться в одном потоке, отличном * от того, в котором вы сейчас находитесь. Что на самом деле происходит, зависит от кода ниже того, который вы опубликовали.
Если там ничего нет и это в основном методе, задача, вероятно, остановится в середине.
Если есть task1.Wait()
или что-то с использованием task1.Result
, текущий поток будет ждать, пока задача не будет завершена, и вы не получите никаких преимуществ в производительности от использования TPL.
Если есть какой-то другой сложный расчет, а затем что-то из предыдущего пункта, эти два вычисления будут выполняться параллельно.
Если вы хотите запустить цикл for
параллельно, используя все доступные ядра, вы должны использовать Parallel.For
или PLINQ :
ParallelEnumerable.Range(0, 100).Select(DoSomeHeavyCalculation).Sum()
* На самом деле, при некоторых обстоятельствах задача может выполняться в одном и том же потоке, но здесь это не имеет значения.