对数据库的多线程操作???急!急!!急!!!220分送上!!!!!(220分)

  • 主题发起人 主题发起人 fsy_2000
  • 开始时间 开始时间
F

fsy_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序开两个进程,一个对数据表进行多线程检索(无限循环)。
一个停止无限循环的多线程。
请问该怎样做这两个进程及多线程的检索。
小弟没学过多线程,请各位高手帮忙!!!!
 
如果你的检索不是一个长查询而是很多个查询在循环可以这样做:
在查询线程的while ... 里加上条件teminated条件,在主线程对该查询线程下
teminate过程就会将查询线程里的teminated置成false,再退出查询。
如果是一个长查询你想中止它,麻烦你找到答案一定要告诉我。
 
对于线程问题,我曾做了许多例子,有一定的经验。
其实线程对数据的操作秩只需要一条线程即可,关键是解决线程中访问TDataset冲突问题
,对于这一点要对线程的Create函数进行OverLoad 。 下面是Sample
//首先在interface中定义
type
ThdOptb = class(TThread)
private
{ Private declarations}
Fqy:Tquery;
ftb:TTable;
Procedure tqOpen ;
//线程中打开数据,速度快,但不要去用recordcount ,last 方法
Procedure DataFillAds;
// 取数据填充
protected
destructor Destroy;
override;
proceduredo
Terminate;
override;
//线程结束时处理
procedure Execute;
override;
constructor Create(cs: Boolean;tq:Tquery);
//重载
constructor Create(cs: Boolean;tb:TTable);
//重载
end;

至于具体内容,您应该没问题吧。
jason_xgm@sohu.com
 
线程的 Execute 方法中一般象这样写:
while not Terminateddo
begin
...
end;
外部程序只能用 Terminate 方法去“试图”结束一个线程,原理就是把 Terminated 设置为 True。
但是如果 Execute 不理会这个标志,那线程就不会中止,除非有别的条件退出 Execute 方法,该方
法结束,线程也就中止了。
 
请大虾jason再解释以下如何重载create 函数?
 
好像似乎不应该是重载create函数,而只是继承而已!
在线程里加一个定时器,定时syschronize(tt),检查是否主线程进行了终止操作
 
多人接受答案了。
 
后退
顶部