В .NET 4 BeginInvoke и Task используют один и тот же пул потоков? - PullRequest
13 голосов
/ 10 марта 2011

.NET 4 представил совершенно новый дизайн пула потоков, доступ к которому осуществляется из библиотеки Task Parallel. Но если у меня есть старый код, который использует Delegate.BeginInvoke, будут ли они выполняться этим новым пулом потоков? Или старый пул потоков еще где-то во время выполнения?

1 Ответ

10 голосов
/ 10 марта 2011

Они оба используют один и тот же ThreadPool. ThreadPool.QueueUserWorkItem тоже.

Однако Delegate.BeginInvoke имеет дополнительные издержки по сравнению с Task.Factory.StartNew и не использует преимущества многих функций ThreadPool, таких как кража работы или новые функции отладки. Я бы порекомендовал рефакторинг, чтобы использовать новые функции Задачи, если позволяет время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...