任务计划程序(Task.Factory)并控制线程数

时间:2013-03-26 17:33:42

标签: c# multithreading task-parallel-library

我一直在阅读多线程,以获得比常规的“推送函数到线程池并等待它完成”的方法更多的东西,这是非常基本的。

基本上,我想要更多地控制线程,传递Cancelation标记的能力,获取返回值等等。这一切看起来都可以使用Task.factory(任务计划程序),从我理解的运行线程池的顶部。

如果是这种情况,如果我限制一般线程池上的线程号,那将适用于我的任务调度程序实现或?

我还读到使用自己的线程池比线程池更好,我可以混合这两个并得到我想要的控件吗?

欢迎任何建议!感谢您抽出宝贵时间解释一下。

1 个答案:

答案 0 :(得分:5)

您可以创建TaskScheduler that limits concurrency。然后,可以使用此自定义计划程序创建自己的TaskFactory,并启动使用您希望的控件自定义的任务。

Parallel Extensions Samples项目包含许多可用作参考的自定义任务计划程序。

  

我还读到使用自己的线程池比线程池更好,我可以混合使用这两个并得到我想要的控件吗?

对于大多数一般用途,我实际上不同意这一点。 .NET ThreadPool非常高效,并且经过高度优化。它包含了一些用于自动缩放所用线程数的指标等。

话虽如此,如果你愿意,你总是可以使用专用线程或你自己的“线程池”实现TaskScheduler