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

StackOverflow https://stackoverflow.com//questions/10673991

  •  12-12-2019
  •  | 
  •  

Вопрос

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

WaitForSingleObject(eventToBeSigaled, timeOut);

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top