C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 82 - Что такое взаимоисключение (Mutex) / MSDN rus / Visual C++

Шаг 82 - Что такое взаимоисключение (Mutex)

Упоминания об этом объекте синхронизации ранее в шагах уже были. API: "Шаг 9 - Синхронизация файловых операций Mutex", где расказывалось о синхронизации доступа к файлам. И в шаге "Шаг 42 - Функция WinMain()" говорилось, что программа может определить запуск другого экземпляра. Но примера не было. Общая идея взаимоисключения похожа на критические секции. Только Mutex позволяет проводить синхронизацию не только между потоками(thread), но и процессами(process), то есть между приложениями.

82.gif (1688 b)

Данный объект синхронизации регистрирует доступ к ресурсам и может находиться в двух состояниях:

  • установлен
  • сброшен

Mutex - установлен в тот момент когда ресурс свободен. Если к объекту есть доступ, то говорят, что сброшен. Для работы с Mutex есть ряд функций. Сначала объект нужно создать CreateMutex(), для доступа OpenMutex(), а для освобождения ресурса ReleaseMutex(). Для доступа к объекту Mutex используется ожидающая функция WaitForSingleObject(). Тонкость здесь следующая. Каждая программа создает объект Mutex по имени. То есть Mutex это именованный объект. А если такой объект синхронизации уже создала другая программа, то по вызову CreateMutex() мы получим указатель на объект, который уже создала первая программа. То есть у обоих программ будет один и тот же объект. Вот это и позволяет производить синхронизацию.


| |
Автор Каев Артем.
[AD]