请问:时间延迟--多线程或时间控件中如何解决(100分)

  • 主题发起人 主题发起人 孤云
  • 开始时间 开始时间

孤云

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的:
procedure start;
var
i,j:Integer;
begin
.....
.....//获取一些基础信息
for i:=1 to zonenumdo
begin
.......
........
for j:=1 to nodenumdo
//nodenum节点数
begin
setinidata(i,j)....//执行过程1
getdata(i,j)......//过程2
countdata(i,j).......//过程3
outputdata(i,j)......//过程4
end;
//之后,每个节点要延迟一定的时间要重复执行过程1~过程4,直到有干预,这个延迟时间由上次执行的过程3计算出的一个值来控制(延迟的时间是变化的),即
//for j:=1 to nodenumdo
// begin
// 。。。。延迟一段时间
// setinidata(i,j)....//执行过程1
// getdata(i,j)......//过程2
// countdata(i,j).......//过程3
// outputdata(i,j)......//过程4
//end;
请问这个地方用多线程应该怎么写,用sleep的话会占用很大的cpu吧
用时间控件的话,各个节点的延迟时间不一样,不知道该怎么处理
请问要是用多线程的话应该怎么写,对多线程不太了解,请详细点,谢谢
要是用时间控件的话,应该怎么处理
用多线程好还是时间控件好,还是。。。
end;

谢谢!

end;
 
你好像在做控制系统。
把这个放入定时器?
// setinidata(i,j)....//执行过程1
// getdata(i,j)......//过程2
// countdata(i,j).......//过程3
// outputdata(i,j)......//过程4
每次执行完了修改定时器的时间。并且关闭后再打开。这样可以保证延迟的准确时间(毫秒),如果你使用lmd的定时器,是支持多线程的/
 
to zywcd
太厉害了,是的,我现在在做一个控制系统
在摆渡上没摆到,请问在哪可以下lmd控件
谢谢!
 
如果想让系统提高效率的话
可以试试在一具独立的线程中执行操作
使用系统对象或者Sleep函数暂停
 
to Mike1234567890
不懂线程
能不能详细点
谢谢 !
 
如果是我的话,我会在一个子线程中用一个Event 数组对应各个过程,然后再主线程中用定时器置位event调度线程执行各个过程。
具体参看WaitForMultipleObjects函数和setevent函数
 
能不能给个例程 maze
谢谢1
Demo中没找到合适的
 
其实,你可以放入一个普通的定时器试试。我觉得可以满足你的要求。控制系统要求是问题。别想太多,可以满足要求而且稳定就好。
 
后退
顶部