Поделиться через


CMultiLock::Lock

Эта функция вызывается для получения доступа к одному или более ресурсов проконтролированных объектами синхронизации, предоставленными в конструктор CMultiLock .

DWORD Lock( 
   DWORD dwTimeOut = INFINITE, 
   BOOL bWaitForAll = TRUE, 
   DWORD dwWakeMask = 0  
);

Параметры

  • dwTimeOut
    Указывает время ожидания объект синхронизации, чтобы быть доступным (просигнализированный). Если INFINITE, Lock ожидает, пока объект не будет сигнал до возвращения.

  • bWaitForAll
    Указывает, включен ли на ожидание выполнения все объекты должны стать просигнализированными в то же время перед возвратом. Если FALSE, Lock возвратит при получении сигнала любой из объектов ожидания.

  • dwWakeMask
    Определяет другие условия, которые разрешены, чтобы прервать операцию ожидания. Полный список доступных параметров для этого параметра см. в разделе MsgWaitForMultipleObjects в Windows SDK.

Возвращаемое значение

Если Lock завершается неудачей, то возвращается значение 1. Если успешно, возвращается одно из следующих значений:

  • Между WAIT_OBJECT_0 и WAIT_OBJECT_0 + (количество объектов, – 1)

    Если bWaitForAllTRUE все объекты просигнализированы (наличии). Если bWaitForAllFALSE, возвращаемое значение – WAIT_OBJECT_0 индекс в массиве объектов объекта, получает сигнал (наличии).

  • WAIT_OBJECT_0 + (количество объектов)

    Событие, определенное в dwWakeMask доступно из входной очереди потока.

  • Между WAIT_ABANDONED_0 и WAIT_ABANDONED_0 + (количество объектов, – 1)

    Если bWaitForAllTRUE все объекты просигнализированы и хотя бы один из объектов брошенный объект мьютекса. Если bWaitForAllFALSE, возвращаемое значение – WAIT_ABANDONED_0 индекс в массиве объектов покинутого объекта в массиве, удовлетворившего операцию ожидания мьютекса.

  • WAIT_TIMEOUT

    Интервал времени ожидания, указанного в dwTimeOut истек без ожидания преуспевая.

Заметки

Если bWaitForAllTRUE, то Lock будет успешно как только все объекты синхронизации станут просигнализированными одновременно. Если bWaitForAllFALSE, то Lock вернет только один или несколько объектов синхронизации станут сигнальным.

Если Lock не может немедленно возвращать управление, он ожидает не более чем количество миллисекунд, указанных в параметре dwTimeOut перед возвратом. Если dwTimeOutINFINITE, то Lock не возвратит до тех пор, пока доступ к объекту не был приобретен или было выполнено условие, указанное во dwWakeMask. В противном случае если Lock может получить объект синхронизации, то будет возвращено успешно. если нет, то он вернет ошибку.

Требования

Header: afxmt.h

См. также

Ссылки

Класс CMultiLock

Диаграмма иерархии