我一直在阅读有关多线程的文章,以获得比真正基本的常规“将函数推送到线程池并等待它完成”方法更多的东西。
基本上,我想要更多地控制线程、传递取消 token 的能力、获取返回值等。使用 Task.factory(任务调度程序)这一切看起来都是可能的,据我所知,它运行在线程池的顶部。
如果是这样的话,如果我限制通用线程池上的线程数,那将适用于我的 Task Scheduler 实现还是?
我还读到说使用您自己的线程池比使用线程池要好,我可以将这两者混合起来并获得我想要的控制权吗?
欢迎提出任何建议!感谢您花时间向更多人解释。
最佳答案
您可以创建一个 TaskScheduler that limits concurrency .然后可以使用此自定义调度程序创建您自己的 TaskFactory
,并启动使用您希望的控件自定义的任务。
Parallel Extensions Samples项目包括许多您可以用作引用的自定义任务计划程序。
I also read that using your own threadpool is better than THE threadpool, can I mix these two up and get the control I want?
对于大多数一般用途,我实际上不同意这一点。 .NET ThreadPool 非常高效,并且经过高度优化。它包括相当多的指标,用于自动缩放使用的线程数等。
话虽如此,您始终可以制作一个使用专用线程或您自己的“线程池”实现的 TaskScheduler
,如果您愿意的话。
关于c# - 任务调度器(Task.Factory)和控制线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15643734/