WaitForSingleObject 中的无限期等待是什么意思呀?

cainiao001 2010-12-08 03:14:25

CEvent g_Event; //事件对象

g_Event.SetEvent(); //设置为有信号状态
WaitForSingleObject(g_Event.m_hObject, INFINITE); //无限期等待


各位大侠,我在学习一个例子的时候看到了上面的代码,看代码的注释有个“无限期等待”,我不理解是怎么样的无限期?因为根据程序实际运行情况看,这条语句后面的代码照样执行了,程序并没有再Wati这里“无限期等待”。

...全文
364 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lingxy 2010-12-10
  • 打赏
  • 举报
回复
注释说的是timeout时间
Allen_zhang 2010-12-09
  • 打赏
  • 举报
回复
查一下msdn就知道了,等待事件有信号,没有超时,如果参数INFINITE改成一个时间值的话就是超时时间
lazy_2010 2010-12-08
  • 打赏
  • 举报
回复
在双线程的环境下来理解这个问题,

一个全局的 event,初始是无信号的

一个线程 A 在无限等待(WaitForSingleObject(,INFINITE)

另外一个线程 B 在条件满足的时候,设置 event 为有信号,使得线程 A 继续执行
sd6814466 2010-12-08
  • 打赏
  • 举报
回复
就是在没信号的状态下,一直等啊等。。。直到等到信号,没等到就继续等啊等。。。
或是直到进程结束。。。
wltg2001 2010-12-08
  • 打赏
  • 举报
回复
无限等待只是说如果内核对象没有信号的话,它会一直等下去,只到它有信号,在某些情况下程序不希望一直死等,所以会设置一个超时值,超过了时间,就算没有信号,它也返回。
Eleven 2010-12-08
  • 打赏
  • 举报
回复
The WaitForSingleObject function checks the current state of the specified object. If the object's state is nonsignaled, the calling thread enters the wait state until the object is signaled or the time-out interval elapses.
xuting0 2010-12-08
  • 打赏
  • 举报
回复
一直有信号
快乐鹦鹉 2010-12-08
  • 打赏
  • 举报
回复
SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。
WaitForSingleObject()等待,直到参数所指定的OBJECT成为发信号状态时才返回
yihandrensunyong 2010-12-08
  • 打赏
  • 举报
回复
行注释 只会注释当前行 这不是函数的注释
yihandrensunyong 2010-12-08
  • 打赏
  • 举报
回复
他注释 至少说 那个参数的意思罢了
小马喝水 2010-12-08
  • 打赏
  • 举报
回复
的确不会“无限期等待”,可能注释是针对“INFINITE”参数的作用来说的
cainiao001 2010-12-08
  • 打赏
  • 举报
回复
按2楼兄弟的意思,如果我把前一句改成 g_Event.resetEvent(),那就真会无限期等待了,对吧!?
cainiao001 2010-12-08
  • 打赏
  • 举报
回复
请不要直接copy手册呀,请针对我列出的代码告诉我为什么:先设置成有信号状态,然后带“INFINITE”参数测试信号状态的结果是“无限期等待”,按我的理解应该是立即返回,怎么注释却是“无限期等待”!是我理解错,还是例子中注释错!
快乐鹦鹉 2010-12-08
  • 打赏
  • 举报
回复
你都已经把信号设置为有信号了,WaitForSingleObject就马上有信号,让你通过了。
无限期等待就是海枯石烂后还继续等待。等待啥呢?就是有信号状态。
yihandrensunyong 2010-12-08
  • 打赏
  • 举报
回复
WaitForSingleObject函数用来检测hHandle事件的信号状态,当函数的执行时间超过dwMilliseconds就返回,但如果参数dwMilliseconds为INFINITE时函数将直到相应时间事件变成有信号状态才返回,否则就一直等待下去,直到WaitForSingleObject有返回值才执行后面的代码。此外,当dwMilliseconds设置为特殊值0时,测试hHandle核心对象是否被激发,函数立即返回。

15,471

社区成员

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

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