0
我有一个手动重置事件来控制(暂停和恢复)while循环。所以在循环中,我必须不断检查事件信号状态在while循环中连续调用WaitForSingleObject是不是很好的做法?
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,内存......)?
还是有更好的方法来检查事件状态在这种情况下?
是的,其他函数可以调用ResetEvent和SetEvent来切换事件状态,从而导致该循环暂停和恢复。不要担心我的循环在做什么。我只是问是否调用WaitForSingleObject持续导致任何问题(CPU,内存,...)?或者有没有更好的方法来检查事件状态? – onmyway133
如上所述:_使用WaitForSingleObjectin loop_没有问题。但是,您也可以查看[关键节对象](http://msdn.microsoft.com/en-us/library/windows/desktop/ms682530%28v=vs.85%29.aspx)或[同步对象] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686364%28v=vs.85%29.aspx)。 – Arno
您可能还喜欢外部控制循环次数的想法。对于这种方法,您应该查看[信号量对象](http://msdn.microsoft.com/en-us/library/windows/desktop/ms685129%28v=vs.85%29.aspx)。 – Arno