дождитесь использования функции одного объекта

Я использую функцию WaitForSingleObject() для реализации ожидания в моей программе.

WaitForSingleObject(eventToBeSigaled, timeOut);

все мы знаем, что эта функция ожидает сигнала о событии в течение заданного периода времени.

Но я хочу знать, что происходит, когда событие уже выделено до входа в этот вызов, в это время ожидание будет fail(WAIT_FAILED)? Пожалуйста, ответьте на это с надлежащей причиной. Я хочу знать это немного глубже.


person Aneesh Narayanan    schedule 20.05.2012    source источник


Ответы (2)


Ответьте на свой первый вопрос: если событие уже было сообщено, ваш Wait() немедленно вернется, возвращая WAIT_OBJECT_0.

Второй вопрос: одно из обстоятельств, при котором возвращается WAIT_FAILED, заключается в том, что дескриптор события закрывается при вызове Wait(). В этом случае планировщик ОС не сможет обработать вызов Wait() и, следовательно, вернет WAIT_FAILED.

Обратите внимание, что, в конце концов, функции Wait() являются средством для пользовательских потоков, чтобы передать ЦП обратно в ОС до тех пор, пока не будет выполнено определенное условие. В зависимости от ваших потребностей вы используете один из примитивов ОС в качестве условия (семафор, мьютекс, события и т. д.). Планировщик ОС, в свою очередь, проверяет это условие, чтобы определить, должен ли ваш рабочий поток получать квант времени ЦП, тем самым гарантируя, что все потоки (и, следовательно, все процессы) получат справедливую долю системных ресурсов.

person Hari Mahadevan    schedule 20.05.2012

вы должны сначала проверить его документацию, ссылка

Remarks

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.

person lazy_banana    schedule 20.05.2012