Вопрос

У нас есть несколько приложений MFC, которые используют CMutex (false, "blah" ), где "blah" позволяет мьютексу работать вне границ процесса.

Одно из этих приложений было переписано без MFC (вместо этого используя Qt).Как я могу имитировать CMutex с помощью вызовов Win32?(QMutex Qt не является межпроцессным.) Я предпочитаю не изменять приложения MFC.

Это было полезно?

Решение

Для межпроцессных мьютексов вам нужны следующие вызовы:

Создайте Mutex

WaitForSingleObject - объект ожидания

Высвобождениемутекс

Закрытая ручка

Это базовые вызовы Win32 API, оболочкой для которых является CMutex.

Для мьютексов только во время процесса вы также можете использовать эти вызовы, которые выполняются быстрее:

Инициализировать критическую секцию

Ввод критической выборки

Оставить критический раздел

Удалить критическую секцию

Другие советы

Следующие функции, вероятно, будут тем, что вам нужно, все они задокументированы в MSDN.

CreateMutex(...)
WaitForSingleObject(...)
ReleaseMutex(...)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top