奇怪的处理时间现象(10分)

  • 主题发起人 主题发起人 helium-he
  • 开始时间 开始时间
H

helium-he

Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下:
m:=0;
Count:=0;
while m <= 0do
begin
sleep(2);
m:=ClientSocket2.Socket.ReceiveBuf(Buff,1000);
inc(count);
if Count > 2800 then
break;
end;
============================
ClientSocket2没有接收数据,程序中从开始循环到结束退出用了28秒多
如果把Sleep(2)去掉,程序如下:
m:=0;
Count:=0;
while m <= 0do
begin
//sleep(2);
m:=ClientSocket2.Socket.ReceiveBuf(Buff,1000);
inc(count);
if Count > 2800 then
break;
end;
==========================
那么从开始循环到结束,用了不到几毫秒
这两者怎么相差这么大?
 
据说sleep的精度是10毫秒
 
Sleep的精度最高,尤其是在10ms以内的延时,只有sleep函数才能够做到。TTimer控件的定时精度最差,而且稳定性不好,波动很大。GetTickCount函数所能实现的最短延时为15ms左右,稳定性相对TTimer要好一些。
 
多人接受答案了。
 
后退
顶部