WaitForSingleObject - ожидание завершения операции в Windows
WaitForSingleObject - это функция, которая блокирует выполнение программы до тех пор, пока указанный объект не станет доступным. Она используется в средствах многопоточности и параллельного программирования для синхронизации выполнения потоков.
Пример использования:
HANDLE hMutex = CreateMutex(NULL, FALSE, NULL);
if(hMutex != NULL)
{
DWORD dwResult = WaitForSingleObject(hMutex, INFINITE);
switch(dwResult)
{
case WAIT_OBJECT_0:
// mutex заблокирован и готов к использованию
// делаем что-то полезное здесь
// освобождаем mutex
ReleaseMutex(hMutex);
break;
case WAIT_ABANDONED:
// владелец mutex умер или неожиданно завершился
// попытка захвата mutex успешна, но он уже разблокирован
break;
case WAIT_TIMEOUT:
// превышено время ожидания
break;
case WAIT_FAILED:
// ошибка - не удалось захватить mutex
break;
}
}
В приведенном примере создается мьютекс (однократно используемый объект синхронизации) и вызывается функция WaitForSingleObject. Она блокирует выполнение программы до тех пор, пока мьютекс не станет доступным. Если мьютекс уже заблокирован другим потоком, то функция WaitForSingleObject ожидает, пока он не будет освобожден. Когда мьютекс станет доступным, поток продолжает свое выполнение. После использования мьютекса его необходимо освободить вызовом функции ReleaseMutex.
В целом, функция WaitForSingleObject предназначена для ожидания завершения операции в другом потоке, получения уведомлений о событиях или синхронизации доступа к общим данным. Она возвращает значение WAIT_OBJECT_0, когда объект становится доступным, WAIT_TIMEOUT, если время ожидания истекло, WAIT_ABANDONED, если владелец объекта умер, и WAIT_FAILED, если произошла ошибка.