L lethe2002 Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-30 #1 我有一单线程程序,两个定时器一个1秒,另一个10秒,现在需要改为多线程程序,在基本上不删减原有代码的前提下,应如何更改,能否给一个模板?
N NeutronDelphi Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-30 #2 我看你的思路有错误,如果你的事务是时序的,1s,10s,那就最好用定时器。
L lethe2002 Unregistered / Unconfirmed GUEST, unregistred user! 2003-10-30 #3 一个是1s是处理数据并写入数据,另一个10s的是随时读取写进的数据,两事件是没有次序关系的,因对多线程不太熟悉,才用了单线程.
I itren Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-07 #5 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 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; 也可以用时间累加的方式.把两个操作都放到这个线程里. 记着设置好临界区!
H HL-HB Unregistered / Unconfirmed GUEST, unregistred user! 2003-11-10 #6 多线程其实也不算太难了,只是在不同的线程之间如果要求同步的话就有点麻烦,但照你的问题来看这两项工作互不相干你就按下面的步骤试一下吧 Type TTimerThread = class(Thread) protected procedure Execute; override; end; procedure TTimerThread.Execute; begin .........//执行的线程操作 end;
多线程其实也不算太难了,只是在不同的线程之间如果要求同步的话就有点麻烦,但照你的问题来看这两项工作互不相干你就按下面的步骤试一下吧 Type TTimerThread = class(Thread) protected procedure Execute; override; end; procedure TTimerThread.Execute; begin .........//执行的线程操作 end;