【发布时间】:2011-07-12 23:57:51
【问题描述】:
.NET 4 引入了由 Task Parallel 库访问的全新线程池设计。但是,如果我有使用 Delegate.BeginInvoke 的旧代码,这些代码会由那个新线程池执行吗?还是旧的线程池仍在运行时的某个地方?
【问题讨论】:
标签: c# .net .net-4.0 concurrency
.NET 4 引入了由 Task Parallel 库访问的全新线程池设计。但是,如果我有使用 Delegate.BeginInvoke 的旧代码,这些代码会由那个新线程池执行吗?还是旧的线程池仍在运行时的某个地方?
【问题讨论】:
标签: c# .net .net-4.0 concurrency
它们都使用相同的线程池。 ThreadPool.QueueUserWorkItem 也一样。
但是,Delegate.BeginInvoke 与 Task.Factory.StartNew 相比具有额外的开销,并且没有利用 ThreadPool 中的许多功能,例如工作窃取或新的调试功能。我建议在时间允许的情况下重构它以使用新的任务功能。
【讨论】: