Программирование для Windows NT

       

Создание объекта Mutex


Для создания объекта Mutex вы должны использовать функцию CreateMutex, прототип которой мы привели ниже:

HANDLE CreateMutex(

  LPSECURITY_ATTRIBUTES lpMutexAttributes, // атрибуты защиты

  BOOL bInitialOwner, // начальное состояние

  LPCTSTR lpName);    // имя объекта Mutex

В качестве первого параметра (атрибуты защиты) вы можете указать значение NULL (как и во всех наших примерах).

   Параметр bInitialOwner определяет начальное состояние объекта Mutex. Если он имеет значение TRUE, задача, создающая объект Mutex, будет им владеть сразу после создания. Если же значение этого параметра равно FALSE, после создания объект Mutex не будет принадлежать ни одной задаче, пока не будет захвачен ими явным образом.

Через параметр lpName вы должны передать указатель на имя объекта Mutex, для которого действуют те же правила, что и для имени объекта-события. Это имя не должно содержать символ ‘\’ и его длина не должна превышать значение MAX_PATH.

Если объект Mutex будет использован только задачами одного процесса, вместо адреса имени можно указать значение NULL. В этом случае будет создан “безымянный” объект Mutex.

Функция CreateMutex возвращает идентификатор созданного объекта Mutex или NULL при ошибке.

Возможно возникновение такой ситуации, когда приложение пытается создать объект Mutex с именем, которое уже используется в системе другим объектом Mutex. В этом случае функция CreateMutex вернет идентификатор существующего объекта Mutex, а функция GetLastError, вызыванная сразу после вызова функции CreateMutex, вернет значение ERROR_ALREADY_EXISTS. Заметим, что функция создания объектов-событий CreateEvent ведет себя в данной ситуации аналогичным образом.



Содержание раздела