我一直在阅读多线程,以获得比常规的“推送函数到线程池并等待它完成”的方法更多的东西,这是非常基本的。
基本上,我想要更多地控制线程,传递Cancelation标记的能力,获取返回值等等。这一切看起来都可以使用Task.factory(任务计划程序),从我理解的运行线程池的顶部。
如果是这种情况,如果我限制一般线程池上的线程号,那将适用于我的任务调度程序实现或?
我还读到使用自己的线程池比线程池更好,我可以混合这两个并得到我想要的控件吗?
欢迎任何建议!感谢您抽出宝贵时间解释一下。
答案 0 :(得分:5)
您可以创建TaskScheduler that limits concurrency。然后,可以使用此自定义计划程序创建自己的TaskFactory
,并启动使用您希望的控件自定义的任务。
Parallel Extensions Samples项目包含许多可用作参考的自定义任务计划程序。
我还读到使用自己的线程池比线程池更好,我可以混合使用这两个并得到我想要的控件吗?
对于大多数一般用途,我实际上不同意这一点。 .NET ThreadPool非常高效,并且经过高度优化。它包含了一些用于自动缩放所用线程数的指标等。
话虽如此,如果你愿意,你总是可以使用专用线程或你自己的“线程池”实现TaskScheduler
。