Есть ли в C32 кросс-платформенное именованное событие, такое как CreateEvent()?

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

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

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

РЕДАКТИРОВАТЬ:

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

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

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

3 ответа

Решение

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

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

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

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

посмотрите на boost:mutex

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

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

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

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

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

Другие вопросы по тегам