Межпроцессный барьер синхронизации в Windows - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь установить барьер между различными процессами в Windows.По сути, они представляют собой две копии одного и того же процесса (запуск их как двух отдельных потоков вместо процессов не возможен).Идея состоит в том, чтобы установить барьеры на разных этапах программы, чтобы оба процесса запускались на каждом этапе одновременно.Каков наиболее эффективный способ реализации этого в Windows?

1 Ответ

3 голосов
/ 09 марта 2012

Использование именованного события (см. Функции CreateEvent и WaitForSingleObject API).Вам потребуется два события на барьер - каждое событие создается в другом экземпляре приложения.Затем оба экземпляра ждут события друг друга.Конечно, позже эти события могут быть повторно использованы для другого барьера.

Существует одна сложность, хотя - поскольку имена событий глобально уникальны (скажем так для простоты), каждое событие будет иметь другое имя, может быть с префиксомпо идентификатору процесса экземпляра.Таким образом, каждый экземпляр приложения должен получить идентификатор другого экземпляра, чтобы найти имя события, созданного другим экземпляром.

Если у вас есть оконное приложение, вы можете передать сообщение, которое проинформирует второй экземпляр приложения о существовании первого экземпляра.

...