Задача.Фабрика.StartNew против новой задачи



кто-нибудь знает, есть ли разница между Task.Factory.StartNew vs new Task с последующим вызовом Start на задач. Глядя на отражатель, кажется, что нет большой разницы. Так что, пожалуй, единственная разница в том, что Task.Factory.StartNewвозвращает задачу, которая уже началась. Это правильно?



Я знаю, что Task.Factory.StartNewи Task.Run имеют различные параметры по умолчанию и Task.Run является предпочтительным вариантом для .Net 4.5.

649   2  

2 ответов:

нашел этой отличная статья Стивена Тоуба, в которой объясняется, что на самом деле существует штраф за производительность при использовании new Task(...).Start(), поскольку метод start должен использовать синхронизацию, чтобы убедиться, что задача запланирована только один раз.

его совет-предпочесть использовать Task.Factory.StartNew для .net версии 4.0. Для .нетто 4.5 Task.Run и оптимальный вариант.

на самом деле в статья Стивена Туба он указывает эту задачу.Run () в точности эквивалентно использованию задачи.Фабрика.StartNew() с параметрами по умолчанию:

Task.Factory.StartNew(someAction, 
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);

Comments

    Ничего не найдено.