4

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

基本上,我想要更多地控制线程、传递取消令牌、获取返回值等的能力。使用 Task.factory (任务调度程序),这一切看起来都是可能的,据我所知,它运行在线程池。

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

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

欢迎任何建议!感谢您花时间解释更多人。

4

1 回答 1

5

您可以创建一个限制并发的 TaskScheduler。然后,此自定义调度程序可用于创建您自己的TaskFactory,并启动使用您希望的控件自定义的任务。

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

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

对于大多数一般用途,我实际上不同意这一点。.NET ThreadPool 非常高效且高度优化。它包括相当多的指标,用于自动缩放使用的线程数等。

话虽如此,如果您愿意,您始终可以TaskScheduler使用专用线程或您自己的“线程池”实现。

于 2013-03-26T17:38:15.733 回答