数据挖掘相关,想将轮询变为并发,以提高数据时效性。不知工程中有没有比较稳定且得到过验证的方法?线程池如何?如可以,如何操作?

解决方案 »

  1.   

    这个不好说,要看数据交叉情况
    有一种这样的
    线程
      while not Terminated do begin
        if not GetData(...) then Break;//从数据列表中获取计算行
         ComputeIt(...);//计算数据
     end;function GetData
    begin
      Lock();
      if index<=High(...) then begin
        ...
        Result := True;
      end;
      UnLock();
    end;
    这种适合有主线的计算任务.CPU有几核或者支持几个线程就开几个线程.
      

  2.   

    谢谢kiboisme的回复,我可能没有说清楚,其实我们现在正在做数据挖掘中准备数据的工作,主要计算15个(可能会更多)数据并入库;而原始数据是通过根据不同的时间段查询不同的表得到,且每个时间段都会把前述得到的15个数据入库,我现在采用的是轮询机制,数据量少可能时间上还能接受,数据量一旦大起来,时间必然拖得很长,所以想借鉴网络通信中的多SOCKET机制实现多TADOQuery查询机制,使轮询变为并发,以提高时效性。 
      

  3.   

    再补充一点,数据库并发查询的同时还得把结果计算出来,数据库:SQL2005