Есть ли в C32 кросс-платформенное именованное событие, такое как CreateEvent ()? - PullRequest
7 голосов
/ 19 апреля 2010

Я ищу что-то аналогичное CreateEvent (), SetEvent () и WaitForMultipleObjects () из мира Win32.

В частности, это должно быть доступно всем процессам на одной машине.

Мы уже используем Poco для некоторых кроссплатформенных вещей, но я не вижу, что Poco :: Event - это то, что я хочу. возможно я что-то упускаю.

EDIT:

Чтобы объяснить, что я хочу сделать:

Я хочу, чтобы процесс B знал, когда что-то происходит в процессе A. Это тривиально в win32 - каждый процесс / поток вызывает CreateEvent () с именем для события. Процесс B вызывает waitForXObject (), а процесс A вызывает SetEvent (), когда что-то происходит. B сигнализируется.

Опять же, в win32 это тривиально, но как это сделать кроссплатформенно.

Ответы [ 3 ]

4 голосов
/ 19 апреля 2010

В C ++ нет встроенного способа делать именованные события. Но вы можете использовать повышение, чтобы сделать это.

Вы ищете boost :: condition и boost :: named_condition

Как вы также упоминали, существует: Poco.NamedEvent

2 голосов
/ 19 апреля 2010

boost имеет ряд кросс-платформенных примитивов, подобных этим.

посмотрите на повышение: мьютекс

На самом деле, посмотрите на Кроссплатформенный эквивалент событий Windows

1 голос
/ 19 апреля 2010

упс. После просмотра ответа Брайана о названных событиях мне кажется, что я пропустил решение Поко:

http://pocoproject.org/docs/Poco.NamedEvent.html

Я видел только Poco.Event

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...