Quartz.net +任务并行库

Tod*_*ier 6 c# multithreading quartz.net task-parallel-library

我正在努力升级我们在内部使用Quartz.net的作业调度系统.看看Quartz的最新版本的源代码,我注意到它仍然使用自己的线程池实现,而不是从.NET 4.0开始随附的大大改进的线程池(或来自System.Threading.Tasks的任何东西).

我很想知道是否有人成功实现了一个作业调度系统,该系统使用Quartz.net进行调度功能,TPL用于线程池.是否相对容易将Quartz的线程池替换为TPL的线程池?Quartz甚至在任务世界中仍然相关吗?另外,正如我对.NET 4.x线程池(核心感知,本地队列,改进的锁定等)的巨大改进一样出售,Quartz的线程池足以满足典型的粗粒度后台作业而且不值得迫使TPL融入其中的努力?

提前感谢您对使用(或不使用)这两个工具的任何见解.

Mar*_*hma 3

Quartz.NET 的目的是解决与 TPL 稍有不同的问题。Quartz.NET 旨在用于循环作业调度,具有丰富的执行计时功能。另一方面,TPL 旨在实现计算工作负载的高性能并行执行。

因此,本质上,您(通常)使用 Quartz.NET 进行精确调度,使用 TPL 来处理需要利用所有计算资源(核心等)尽快完成的并发工作负载。

话虽如此,我想说 Quartz.NET 使用的线程池实现足以完成这项工作。另请记住,Quartz.NET 兼容 .NET 3.5,不能使用仅 4.0 的功能。

当然,您也可以随时将两者结合到您的解决方案中。