我一直在阅读多线程,以获得比常规的“将函数推送到线程池并等待它完成”方法更多的东西,这是非常基本的。
基本上,我想要更多地控制线程、传递取消令牌、获取返回值等的能力。使用 Task.factory (任务调度程序),这一切看起来都是可能的,据我所知,它运行在线程池。
如果是这种情况,如果我限制一般线程池上的线程数,那将适用于我的任务调度程序的实现还是?
我还读到使用您自己的线程池比线程池更好,我可以将这两者混合并获得我想要的控制吗?
欢迎任何建议!感谢您花时间解释更多人。
我一直在阅读多线程,以获得比常规的“将函数推送到线程池并等待它完成”方法更多的东西,这是非常基本的。
基本上,我想要更多地控制线程、传递取消令牌、获取返回值等的能力。使用 Task.factory (任务调度程序),这一切看起来都是可能的,据我所知,它运行在线程池。
如果是这种情况,如果我限制一般线程池上的线程数,那将适用于我的任务调度程序的实现还是?
我还读到使用您自己的线程池比线程池更好,我可以将这两者混合并获得我想要的控制吗?
欢迎任何建议!感谢您花时间解释更多人。
您可以创建一个限制并发的 TaskScheduler。然后,此自定义调度程序可用于创建您自己的TaskFactory
,并启动使用您希望的控件自定义的任务。
Parallel Extensions Samples项目包括许多可用作参考的自定义任务计划程序。
我还读到使用您自己的线程池比线程池更好,我可以将这两者混合并获得我想要的控制吗?
对于大多数一般用途,我实际上不同意这一点。.NET ThreadPool 非常高效且高度优化。它包括相当多的指标,用于自动缩放使用的线程数等。
话虽如此,如果您愿意,您始终可以TaskScheduler
使用专用线程或您自己的“线程池”实现。