VC++中Sleep(INFINITE)会不会返回?

adamwyb 2010-10-25 02:47:17
很多程序代码中,Sleep(INFINITE)经常注释为“永远等待”,但事实INFINITE是有值的,是0xFFFFFFFF,如果按无符号的整型来计算,这个值是4294967295,就是等待4294967295毫秒,相当于1193小时,或者约为50天。我查了下MSDN,里面并没有说明如果Sleep参数为INFINITE,就无限等待。所以理论上说,当程序运行了50天后,Sleep(INFINITE)就会返回。
有没有朋友做过这个尝试?或者有较有利的证据说明?谢谢!
...全文
1139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2010-10-25
  • 打赏
  • 举报
回复
有兴趣可以Sleep(INFINITE)设置个断点,汇编调试一下即可知道
7C802488 cmp eax,0FFFFFFFFh
7C80248B je 7C80938C
也即会对输入的参数做单独的判断
WheatField 2010-10-25
  • 打赏
  • 举报
回复
应该会无限等待, 因为GetTickCount()也有个上限,也许在判断Sleep()是否结束的时候就用到了GetTickCount(),这样就永远也不会结束了。

不过楼主钻这个牛角尖又何必呢。无限等待? 什么情况下需要无限等待,干吗不退出算了。
宁静的舞者 2010-10-25
  • 打赏
  • 举报
回复
我也在MSDN上搜了半天,还去MFC的源码中去找Sleep的源码(可惜无功而返,呜呜),这个问题确实值得研究!
************************************************************************
* QQqun Name : C++/MFC/VC/Embedded
* QQqun Number : 122594105
* QQqun Brief : C++/MFC/VC/Embedded交流群,期待您的加盟!
* QQqun AIM : 一同学习,共同进步!
* QQqun Song : 我从菜菜走来,心怀梦想向着IT的巅峰疯狂地闯!大牛来帮我
* 我把小牛帮。天空属于你我,大地属于你我,携手并肩,共创美丽辉煌!
************************************************************************
傻X 2010-10-25
  • 打赏
  • 举报
回复
呵呵..楼主研究这个不知道算不算钻牛角尖....如果要INFINITE还是用循环比较可靠.
ouyh12345 2010-10-25
  • 打赏
  • 举报
回复
右击INFINITE,转到定义,看看是什么值

计算机的世界里,没有永远
hilevel 2010-10-25
  • 打赏
  • 举报
回复
许多与时间相关的函数都有一个上限是大约50天,所以我认为楼主的猜想是对的

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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