+任务并行库
本文关键字:并行 任务 | 更新日期: 2023-09-27 18:01:44
我正在升级我们内部使用的使用Quartz.net的作业调度系统。查看最新版本Quartz的源代码,我注意到它仍然使用自己的线程池实现,而不是从。net 4.0开始发布的经过大幅改进的线程池(或来自System.Threading.Tasks的任何东西)。
我很想知道是否有人成功地实现了一个作业调度系统,该系统使用Quartz.net的调度功能和TPL的线程池。将Quartz的线程池换成TPL的线程池是否相对容易?Quartz在任务领域还有意义吗?另外,我也赞同。net 4的巨大改进。x线程池(核心感知、本地队列、改进的锁定等),Quartz的线程池是否足够好,适合典型的粗粒度后台作业,不值得强迫TPL加入其中?
提前感谢您对使用(或不使用)这两个工具的任何见解。
石英。NET的存在是为了解决与TPL不同的问题。石英。NET旨在用于循环作业调度,具有丰富的执行定时功能集。另一方面,TPL用于计算工作负载的高性能并行执行。
所以本质上你(通常)使用石英。. NET用于精确调度,TPL用于需要利用所有计算资源(内核等)尽快完成的并发工作负载。
说到这里,我想说的是,线程池实现的石英。NET的使用对于这项工作来说已经足够了。还要记住,石英。.NET兼容。NET 3.5,不能只使用。NET 4.0的特性。
当然,你也可以在你的解决方案中把这两者结合起来。