我有一个手动重置事件来控制(暂停和恢复)while循环。所以在循环中,我必须不断检查事件信号状态
void my_loop()
{
while(is_ok)
{
// Check whether event is in signaled state
dwWaitResult = WaitForSingleObject(
ghEvent, // event handle
INFINITE); // indefinite wait
switch (dwWaitResult)
{
// Event object was signaled
case WAIT_OBJECT_0:
printf("my_loop is working");
break;
// An error occurred
default:
printf("my_loop is halted");
break;
}
}
}
这是好习惯吗?不断调用WaitForSingleObject
会导致任何问题(CPU,内存,......)吗?
或者在这种情况下是否有更好的方法来检查事件状态?
答案 0 :(得分:0)
在此处选择手动重新安装事件会导致循环繁忙(100%cpu),同时设置事件。因此,您的代码中必须有另一部分重置事件,或者您是否忘记在WAIT_OBJECT_0
情况下重置事件?
这是一个好习惯吗?嗯,当没有设置事件时,这段代码只是等待(INFINITE
)。但是,当设置事件时,这只是忙于轮询事件以重置。
我怀疑你想在WAIT_OBJECT_0
的情况下做一些其他事情而你想要有外部控制。你可以这样做,在循环中使用WaitForSingleObject
没有问题。