单线程--->多线程?(50分)

  • 主题发起人 主题发起人 lethe2002
  • 开始时间 开始时间
L

lethe2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一单线程程序,两个定时器一个1秒,另一个10秒,现在需要改为多线程程序,在基本上不删减原有代码的前提下,应如何更改,能否给一个模板?
 
我看你的思路有错误,如果你的事务是时序的,1s,10s,那就最好用定时器。
 
一个是1s是处理数据并写入数据,另一个10s的是随时读取写进的数据,两事件是没有次序关系的,因对多线程不太熟悉,才用了单线程.
 
请问数据库访问用ADO还是其他
 
type
TTmrThread = class(TThread)
private
FTaskList;
//保存操作参数.
Public
FCTimeout:integer;
constructor Create;
Prodedure SendPackage;
//定义你自己的数据库操作函数..
protected
procedure Execute;
override;
end;

//实现..
constructor TTmrThread.Create;override;
begin
inherited create(False);
FTCPCParams:=TCPCParams;
Connected:= ... ;
//如连接数据库
end;

procedure TTmrThread.Execute;
begin
while truedo
begin
Sleepex(FCTimeout,false);
//每隔 Fctimeout的时间 执行一次.
SendPackage;
//调用你的操作函数..
end;
end;

也可以用时间累加的方式.把两个操作都放到这个线程里.
记着设置好临界区!
 
多线程其实也不算太难了,只是在不同的线程之间如果要求同步的话就有点麻烦,但照你的问题来看这两项工作互不相干你就按下面的步骤试一下吧
Type
TTimerThread = class(Thread)
protected
procedure Execute;
override;
end;
procedure TTimerThread.Execute;
begin
.........//执行的线程操作
end;


 
后退
顶部