windows和linux下的sleep之比较
1
#include
<
ace
/
ACE.h
>
2
3
#include
<
ace
/
OS.h
>
4
5
#include
<
ace
/
Log_Msg.h
>
6
7
using
namespace
std;
8
9
int
main(
int
argc,
char
*
argv[])
10
11
{
12
13
ACE_DEBUG(( LM_NOTICE,
"
%D\n
"
));
14
15
ACE_OS::sleep( ACE_Time_Value(
0
,
1
*
1000
) );
16
17
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 1\n
"
));
18
19
ACE_OS::sleep( ACE_Time_Value(
0
,
5
*
1000
) );
20
21
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 5\n
"
));
22
23
ACE_OS::sleep( ACE_Time_Value(
0
,
10
*
1000
) );
24
25
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 10\n
"
));
26
27
ACE_OS::sleep( ACE_Time_Value(
0
,
50
*
1000
) );
28
29
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 50\n
"
));
30
31
ACE_OS::sleep( ACE_Time_Value(
0
,
100
*
1000
) );
32
33
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 100\n
"
));
34
35
ACE_OS::sleep( ACE_Time_Value(
0
,
1000
*
1000
) );
36
37
ACE_DEBUG(( LM_NOTICE,
"
%D sleep 1000\n
"
));
38
39
return
EXIT_SUCCESS;
40
41
}
42
linux下的结果:
Sat Jan 12 2008 20:55:26.459703
Sat Jan 12 2008 20:55:26.460899 sleep 1 // 1.196ms
Sat Jan 12 2008 20:55:26.466037 sleep 5 // 5.138ms
Sat Jan 12 2008 20:55:26.476203 sleep 10 // 10.166ms
Sat Jan 12 2008 20:55:26.526348 sleep 50 // 50.145ms
Sat Jan 12 2008 20:55:26.626466 sleep 100 // 100.118ms
Sat Jan 12 2008 20:55:27.626739 sleep 1000 // 1000.273ms
windows下的结果:
Sat Jan 12 2008 22:51:07.993000
Sat Jan 12 2008 22:51:08.009000 sleep 1 // 16ms
Sat Jan 12 2008 22:51:08.009000 sleep 5 // 0ms
Sat Jan 12 2008 22:51:08.024000 sleep 10 // 15ms
Sat Jan 12 2008 22:51:08.071000 sleep 50 // 27ms
Sat Jan 12 2008 22:51:08.181000 sleep 100 //110ms
Sat Jan 12 2008 22:51:09.181000 sleep 1000 // 1000ms
由此看来,windows下sleep的精度为15ms,,但是1000ms以下的误差都比较大