QWorker与XE 7的System.Threading对比

   Delphi/C++ Builder XE7版新引入了System.Threading单元来加入并行编程支持,而QWorker却是从作业(Job)的视角,面向作业和工作者(Worker)提供编程支持,同时QWorker也同时提供了TQForJobs来支持For并行编程支持。

    在QWorker里,我们将要处理的任务当做一个作业,将处理资源(线程)当作工作者,业务模型也就更简单。由于视角的不同,也为QWorker和系统的System.Threading带来一些不同:

    QWorker自动创建了一个全局的Workers对象,来提供给其它模块,从而简化了调度器的创建过程,只需要此入QWorker单元就可以直接使用。

    QWorker从作业管理的角度,提供了简单普通作业和周期性作业投寄函数(Post)、延迟作业(Delay)、定时作业(At)、信号(Signal)的管理,而XE7提供的System.Threading还是从传统的MP编程模型,接口复杂,用起来并不够简单。

    QWorker同时提供了TQJobGroup来提供一组作业之间的串行化和同步,使用起来相当方便,一个简单的例子:

var
  AGroup:TQJobGroup;
begin
AGroup:=TQJobGroup.Create(True);
AGroup.Prepare;
AGroup.Add(DoFirstJobStep,Pointer(1),false);
AGroup.Add(DoSecondJobStep,nil,true);
AGroup.Run;
AGroup.WaitFor;
FreeObject(AGroup);
end

 

分享到: