+ -
当前位置:首页 → 问答吧 → 线程执行一遍的最短时间是多少? 如何加快线程的执行速度?

线程执行一遍的最短时间是多少? 如何加快线程的执行速度?

时间:2011-12-28

来源:互联网

我做了一个最简单的线程:
procedure TDataProcssor2.Execute;
begin
  SetName;
  { Place thread code here }
  while not Terminated do
  begin
  Form1.memo2.Lines.Add('线程周期开始。。。'+ formatdatetime('nn:ss.zzz', now));
  Form1.memo2.Lines.Add('线程周期结束。。。'+ formatdatetime('nn:ss.zzz', now));
  sleep(1);
  end;

end;

每执行一遍 Sleep(1),但结果却大大出乎意料:线程执行过程不点时间,但从线程执行完,到再次进入线程执行之间的时间间隔约为16毫秒,将线程的优先级设为最高效果也一样。

同样使用定时器TTimer,将Interval设置为1,定时器的执行的间隔也约为16毫秒。
---------------------------------------------
我想获得一个更加快速的循环执行过程,用于数据处理,不知道可以使用什么方式,请高手赐教。

作者: vipdb003   发布时间: 2011-12-28

这个问题其实没有意义,假设同样代码的前提下线程执行的时间是要看cpu分配给他的时间片,window线程时间片分配机制中优先级,等待时间以及其他线程等等都可以影响线程执行的时间,从线程执行完到再次进入线程执行之间的时间间隔更是要看windows脸色说话,所以理论上同一个线程两次执行的时间可能也是不同的,而且你举了timer的例子,用那玩意统计时间比线程还不靠谱

作者: funxu   发布时间: 2011-12-28

那就别加sleep(1),sleep一次最少睡眠一个时间片,另外你不能直接在线程中操作VCL,会导致出错,输出调试信息可以使用OutputDebugString

作者: pathletboy   发布时间: 2011-12-28

热门下载

更多