这两个sleep函数有什么区别??

jl443960770 2009-10-18 11:06:07
ACE_OS::nanosleep(10)
ACE_OS::sleep(10)
...全文
469 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaymade 2011-10-21
  • 打赏
  • 举报
回复
19楼正解
洒家一笑 2010-05-27
  • 打赏
  • 举报
回复
ACE_OS::sleep(ACE_Time_Value(0, 10000)); //暂停10毫秒
ACE_OS::sleep(1);//暂停1秒
iisbsd 2009-10-19
  • 打赏
  • 举报
回复

ACE_INLINE int
ACE_OS::sleep (u_int seconds)
{
ACE_OS_TRACE ("ACE_OS::sleep");
#if defined (ACE_WIN32)
::Sleep (seconds * ACE_ONE_SECOND_IN_MSECS);
return 0;
#elif defined (ACE_HAS_CLOCK_GETTIME)
struct timespec rqtp;
// Initializer doesn't work with Green Hills 1.8.7
rqtp.tv_sec = seconds;
rqtp.tv_nsec = 0L;
ACE_OSCALL_RETURN (::nanosleep (&rqtp, 0), int, -1);
#else
ACE_OSCALL_RETURN (::sleep (seconds), int, -1);
#endif /* ACE_WIN32 */
}
iisbsd 2009-10-19
  • 打赏
  • 举报
回复
ACE_OS::sleep难道不是秒么?
Caballeroo 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 happy002 的回复:]
linux 下  sleep(1) 是一秒
[/Quote]

对,linux下sleep(1)是1s, 毫秒是usleep(1000)
happy002 2009-10-19
  • 打赏
  • 举报
回复
linux 下 sleep(1) 是一秒
ztenv 版主 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wxdcxp 的回复:]
引用 10 楼 caballeroo 的回复:
引用 4 楼 lianshaohua 的回复:
ACE_OS::sleep()好像是秒级的;


我也觉得!

是毫秒级的
sleep(1000);
是一秒
[/Quote]

难道我的电脑有问题?我用ACE_OS::sleep(1);结果线程睡了1秒。。。。。。要么是我用的ACE版本不对?(ACE5.5,ACE5.6的)

汗。。。。。。
wxdcxp 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 caballeroo 的回复:]
引用 4 楼 lianshaohua 的回复:
ACE_OS::sleep()好像是秒级的;


我也觉得!
[/Quote]
是毫秒级的
sleep(1000);
是一秒
Caballeroo 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lianshaohua 的回复:]
ACE_OS::sleep()好像是秒级的;
[/Quote]

我也觉得!
  • 打赏
  • 举报
回复
精度问题
lihan6415151528 2009-10-19
  • 打赏
  • 举报
回复
一个纳秒级,一个毫秒级
平凡的思想者 2009-10-19
  • 打赏
  • 举报
回复
ACE_OS::nanosleep(10)是纳秒精度,ACE_OS::sleep(10) 是毫秒精度。
nanosleep跟线程切换到时间片有关,一般实际精度达不到10纳秒。

Wind_Runner 2009-10-19
  • 打赏
  • 举报
回复
纳秒级别的如果cpu时间片达不到的话,实际是不准确的
积极2 2009-10-19
  • 打赏
  • 举报
回复
1楼说的没错!
ztenv 版主 2009-10-19
  • 打赏
  • 举报
回复
ACE_OS::sleep()好像是秒级的;
中才德创 2009-10-19
  • 打赏
  • 举报
回复
没想到还有个更精密的.
wanghao111 2009-10-19
  • 打赏
  • 举报
回复
一个纳秒级,一个毫秒级
delphiwcdj 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 forever_feng 的回复:]
ACE_OS::nanosleep(10)是纳秒精度,ACE_OS::sleep(10) 是毫秒精度。
nanosleep跟线程切换到时间片有关,一般实际精度达不到10纳秒。
[/Quote]
up
pcboyxhy 2009-10-19
  • 打赏
  • 举报
回复
Linux 2.6.21内核之前,定时器精度都受制于jiffy(HZ),HZ最大是1000,所以定时器精度最高是 1ms。

Linux 2.6.21开始, High-Resolution Timers提高了精度,可以有更高的精度,但是只有部分硬件平台支持,
微妙级别的可以实现。


纳秒级别的定时器,目前无法实现。

即使能实现,如果恰好有一个不可抢占的进程占用了CPU,那么误差就很大了
jackyjkchen 2009-10-18
  • 打赏
  • 举报
回复
纳秒精度与毫秒精度

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧