问题是这样的:
procedure start;
var
i,j:Integer;
begin
.....
.....
for i:=1 to zonenum do
begin
.......
........
for j:=1 to nodenum do //nodenum节点数
begin
setinidata(i,j)....//执行过程1
getdata(i,j)......//过程2
countdata(i,j).......//过程3
outputdata(i,j)......//过程4
end;
//之后,每个节点要延迟一定的时间要重复执行过程1~过程4,直到有干预,这个延迟时间由上次执行的过程3计算出的一个值来控制(延迟的时间是变化的),即
//
//
// 。延迟一段时间
// setinidata(i,j)....//执行过程1
// getdata(i,j)......//过程2
// countdata(i,j).......//过程3
// outputdata(i,j)......//过程4
//每个节点都执行
请问这个地方用多线程应该怎么写,用sleep的话会占用很大的cpu吧
用时间控件的话,各个节点的延迟时间不一样,不知道该怎么处理请问要是用多线程的话应该怎么写,对多线程不太了解,请详细点,谢谢
要是用时间控件的话,应该怎么处理
用多线程好还是时间控件好,还是 end;谢谢!
end;
procedure start;
var
i,j:Integer;
begin
.....
.....
for i:=1 to zonenum do
begin
.......
........
for j:=1 to nodenum do //nodenum节点数
begin
setinidata(i,j)....//执行过程1
getdata(i,j)......//过程2
countdata(i,j).......//过程3
outputdata(i,j)......//过程4
end;
//之后,每个节点要延迟一定的时间要重复执行过程1~过程4,直到有干预,这个延迟时间由上次执行的过程3计算出的一个值来控制(延迟的时间是变化的),即
//
//
// 。延迟一段时间
// setinidata(i,j)....//执行过程1
// getdata(i,j)......//过程2
// countdata(i,j).......//过程3
// outputdata(i,j)......//过程4
//每个节点都执行
请问这个地方用多线程应该怎么写,用sleep的话会占用很大的cpu吧
用时间控件的话,各个节点的延迟时间不一样,不知道该怎么处理请问要是用多线程的话应该怎么写,对多线程不太了解,请详细点,谢谢
要是用时间控件的话,应该怎么处理
用多线程好还是时间控件好,还是 end;谢谢!
end;
sleep一般不放在主线程,因为这样看上去程序类似死循环的假死现象,其实也是因为CPU没有分配时间给主线程,不存在占用CPU,误导啊误导...
var
StartTick:LongInt;
Counter:LongInt;begin
StartTick:=GetTickCount;
Counter:=GetTickCount;
while (Counter-StartTick)<TickCount do
begin
Sleep(0);
Counter:=GetTickCount;
end;
end;
如果对时间没要求就用Timer吧
多线程:如果你不熟还是不要用了