Quartz.net +任务并行库

时间:2013-03-02 01:24:29

标签: c# multithreading task-parallel-library quartz.net

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

说到这里,我会说Quartz.NET使用的线程池实现对于这项工作来说已经足够了。另请注意,Quartz.NET符合.NET 3.5,不能仅使用4.0功能。

当然,您也可以在解决方案中将两者结合使用。

相关问题