【问题标题】:In .NET 4, does BeginInvoke and Task use the same threadpool?在 .NET 4 中,BeginInvoke 和 Task 是否使用相同的线程池?
【发布时间】:2011-07-12 23:57:51
【问题描述】:

.NET 4 引入了由 Task Parallel 库访问的全新线程池设计。但是,如果我有使用 Delegate.BeginInvoke 的旧代码,这些代码会由那个新线程池执行吗?还是旧的线程池仍在运行时的某个地方?

【问题讨论】:

    标签: c# .net .net-4.0 concurrency


    【解决方案1】:

    它们都使用相同的线程池。 ThreadPool.QueueUserWorkItem 也一样。

    但是,Delegate.BeginInvoke 与 Task.Factory.StartNew 相比具有额外的开销,并且没有利用 ThreadPool 中的许多功能,例如工作窃取或新的调试功能。我建议在时间允许的情况下重构它以使用新的任务功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多