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