关于数据结构中队列的问题(150分)

  • 主题发起人 主题发起人 midastime
  • 开始时间 开始时间
M

midastime

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠好,我现在要做一个数据采集程序,通过一个S查询多个client分机的数据,限于查询通道,查询命令只能一个一个下发,但是这多个client的查询命令是一次性全部过来的,而且下面分机的反应时间很慢,所以必须做一个缓冲,所以现在程序必须加一个缓冲池延缓下发速度,我想用数据结构中的fifo的队列来做,用DELPHI的Tqueue来做是否可以?应该怎么做呢?请大家帮忙啊,新接触DELPHI,很多东西还不熟。先谢谢大家了啊。
 
接受处理过程单独就可以阿
 
服务段与下面是通过一套网管设备的接口连接,这个接口对速度和查询频率等都有限制,而且服务段是几十个查询一块下来的,所以必须有缓冲
 
如果你的缓冲区大小是固定的(比如固定分配五份缓冲数据,每当有新数据进入缓冲区时,就把最先进入缓冲区的那份数据Pop出来处理),那么还不如自己定义一个静态的记录数组来做,因为基本上TQueue对象只是实现了队列项目的Pop和Push,而且无论Pop和Push时操作的对象都是指向项目的指针,也就是说它本身并不涉及对队列的存储管理,实际上队列项目所用的存储区的分配、写入、读出、释放等还是由程序员自己操心的。这种工作方式比由我们自己完全实现数据结构的定义、管理、存入和取出等操作不见得方便得到哪里去,因为队列结构的Pop和Push过程都是很简单的。
 
3ks,我的缓冲区确实是固定的,静态的记录数组怎么做呢?能不能举个例子呢?现在我还摸不着头脑啊。
 
这个很简单啊。
implementation
var
MyQueue:TQueue
//声明队变量

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
s:string;
astr:^string;
i:integer;
begin
myqueue:=Tqueue.Create;
new(astr);
astr^:=inttostr(i);
myqueue.Push(astr);

showmessage(string(myqueue.Pop^));

end.
 
完成,多谢
 
后退
顶部