多线程技术在Delphi数据库编程中的应用

http://tech.ddvip.com   2006年07月31日    社区交流

本文详细介绍多线程技术在Delphi数据库编程中的应用

  3、线程的终止

  当线程从Execute()退出时,线程终止,触发OnTerminate事件,从而清除线程对象。也可以在线程运行过程中,由其他线程控制该线程的退出,这时需要调用线程对象的Terminate方法,并设置该线程对象的Terminate属性为True。

  用多线程实现航班优化编排

  航班优化编排考虑的因素多,涉及到的航班数据量大,分析、优化过程较复杂,需要进行大量计算, 同时产生大量中间数据,考虑到各航班之间可以独立进行分析,我们采取了多线程方法来提高优化速度。

  预先将航班分成了三组,用三个线程同时实现。

  首先定义了OptimizeThread,并由OptimizeThread派生出ScheOptimizeThread,再分别对OptimizeThread、ScheOptimizeThread中的方法进行定义。

  { OptimizeThread }
procedure OptimizeThread.Execute;
begin
{ Place thread code here }
DoAnalyse;
end;
constructor ScheOptimizeThread.Create(Exec:TADOCommand;CaseID,count:Integer);
begin
docExec:=Exec;
self.CaseID:=CaseID;
self.Sche:=count;
FreeOnTerminate :=True;//线程终止时自动删除对象
inherited Create(False);
end;
procedure ScheOptimizeThread.DoAnalyse;
begin
docExec.CommandText:=’exec threadtest ’+InttoStr(CaseID)+’ ,’+InttoStr(count);
// 航班优化编排的具体过程,涉及到大量的数据处理,如果把这些数据都调到客户端,再
// 进行计算,将会增加网络流量,浪费执行时间,因此在系统中,我们用存储过程“threadtest”
// 实现,将与数据关系密切的计算直接放在数据所在的节点,计算完毕直接返回结果。
docExec.Execute;
end;
end.

  在主程序中可以直接调用

  ScheOptimizeThread.Create(Exec:TADOCommand;CaseID,count:Integer);

  便可实现多线程的使用。

  结束语

  在满足繁杂的运作规定的前提下,使用多线程对航班计划进行优化编排,可显著提高优化效率,有助于降低飞行成本,从而提高整个航空公司的飞行运作效益和飞行管理水平,提高航空公司的市场竞争力,具有广阔的市场应用前景。

来源:计算机与信息技术    作者:张华 卢慧    责编:豆豆技术应用

正在加载评论...