6

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

我很想知道是否有人成功实现了一个作业调度系统,该系统使用 Quartz.net 的调度功能和 TPL 的线程池。将 Quartz 的线程池换成 TPL 的线程池相对容易吗?Quartz 在任务世界中是否仍然相关?或者,正如我对 .NET 4.x 线程池的巨大改进(核心感知、本地队列、改进的锁定等)所销售的那样,Quartz 的线程池对于典型的粗粒度后台作业来说是否足够好,不值得迫使 TPL 参与其中的努力?

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

4

1 回答 1

3

Quartz.NET 可以解决与 TPL 不同的问题。Quartz.NET 旨在用于具有丰富的执行时间功能集的重复作业调度。另一方面,TPL 用于计算工作负载的高性能并行执行。

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

话虽如此,我想说 Quartz.NET 使用的线程池实现对于这项工作来说已经足够了。还要记住 Quartz.NET 是 .NET 3.5 兼容的,不能只使用 4.0 的特性。

当然,您也可以在解决方案中始终将两者结合起来。

于 2013-03-04T18:08:16.110 回答