На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Mutex Objects



A mutex object is a synchronization object whose state is set to signaled when it is not owned by any thread, and nonsignaled when it is owned. Only one thread at a time can own a mutex object, whose name comes from the fact that it is useful in coordinating mutually exclusive access to a shared resource. For example, to prevent two threads from writing to shared memory at the same time, each thread waits for ownership of a mutex object before executing the code that accesses the memory. After writing to the shared memory, the thread releases the mutex object.

A thread uses the CreateMutex function to create a mutex object. The creating thread can request immediate ownership of the mutex object and can also specify a name for the mutex object. Threads in other processes can open a handle to an existing mutex object by specifying its name in a call to the OpenMutex function. For additional information about names for mutex, event, semaphore, and timer objects, see Interprocess Synchronization.

Any thread with a handle of a mutex object can use one of the wait functions to request ownership of the mutex object. If the mutex object is owned by another thread, the wait function blocks the requesting thread until the owning thread releases the mutex object using the ReleaseMutex function. The return value of the wait function indicates whether the function returned for some reason other than the state of the mutex being set to signaled.

Once a thread owns a mutex, it can specify the same mutex in repeated calls to one of the wait-functions without blocking its execution. This prevents a thread from deadlocking itself while waiting for a mutex that it already owns. To release its ownership under such circumstances, the thread must call ReleaseMutex once for each time that the mutex satisfied the conditions of a wait function.
If a thread terminates without releasing its ownership of a mutex object, the mutex object is considered to be abandoned. A waiting thread can acquire ownership of an abandoned mutex object, but the wait function's return value indicates that the mutex object is abandoned. It is best to assume that an abandoned mutex object indicates that an error has occurred and that any shared resource being protected by the mutex object is in an undefined state. If the thread proceeds as though the mutex object had not been abandoned, its "abandoned" flag is cleared when the thread releases its ownership. This restores normal behavior if a handle to the mutex object is subsequently specified in a wait function.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Mutex Возражает



Объект mutex - объект синхронизации чье состояние установлено на сигнализированное когда оно не принадлежащее любой резьбе, и nonsignaled когда использовано. Только один резьба за один раз может обладать объектом mutex, чье имя исходит из то, что оно полезное в координатном взаимно исключительном доступе к коллективному ресурсу. Например, чтобы предохранять две резьбы чтобы писаться на распространившее память в то же самое время, каждая резьба ждет собственность на объект mutex перед выполнять кода, которое имеет доступ к памяти. После сочинения в коллективную память, резьба выпускает объект mutex.

Резьба использует функцию CreateMutex, чтобы создавать объект mutex. Создание резьбы может попросить безотлагательную собственность на объект mutex и может также определить называть в честь объекта mutex. Резьба в других процессах может открыть ручку на существующий mutex объект определяя имя на вызове в функцию OpenMutex. Для дополнительной информации о называет в честь mutex, событие, семафор, и таймерные объекты, смотри Межпроцессовую Синхронизацию.

Любая резьба с ручкой объекта mutex может использовать одну из функций ожидания, чтобы запрашивать собственность на объект mutex. Если объект mutex принадлежащий другой резьбе, функция ожидания блокирует запрос резьбы пока собственная резьба не выпустит объект mutex, использовавший функцию ReleaseMutex. Обратная величина функции ожидания указывает независимо функцию возвращанную по некоторой причине кроме состояния mutex, установить на сигнализированное.

Как только резьба будет обладать mutex, она может определить тот же mutex на регулярных вызовах в одно из ожидания-функций не блокируя выполнение. Это предохраняет резьбу от deadlocking себя при ожидании mutex, которым он уже обладает. Чтобы выпускать свою собственность при таких обстоятельствах, резьба должна назвать ReleaseMutex как только в течение всякий раз, когда, что mutex удовлетворенный условия функции ожидания.
Если резьба не завершает выпуская собственность на объект mutex, считается, что объект mutex будет покинут. Ожидание резьбы может приобрести собственность на заброшенный mutex объект, но функциональная обратная величина ожидания указывает, что объект mutex покинут. Лучще всего допускать что заброшенный mutex объект указывает, что ошибка произошла и, что любой коллективный ресурс, защищанный объектом mutex - в неопределенном состоянии. Если резьба приступает как если бы объект mutex не был покинут, флаг "покинувший" очищен когда резьба выпускает свою собственность. Это восстанавливает нормальное поведение если ручка на объект mutex впоследствии определена в функции ожидания.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz