.NET 4 представила совершенно новую конструкцию пула потоков, доступную библиотеке задач Parallel. Но если у меня есть старый код, который использует Delegate.BeginInvoke, будут ли они выполняться этим новым пулом потоков? Или старый пул потоков все еще находится во время выполнения?
В .NET 4, BeginInvoke и Task используют тот же threadpool?
Ответ 1
Они оба используют один и тот же ThreadPool. ThreadPool.QueueUserWorkItem
, также.
Однако Delegate.BeginInvoke
имеет дополнительные накладные расходы по сравнению с Task.Factory.StartNew и не использует преимущества многих функций ThreadPool, таких как кража работы или новые функции отладки. Я бы рекомендовал реорганизовать это, чтобы использовать новые функции Задачи по мере того, как позволяет время.