2010-04-19 6 views
7

Busco algo análogo a CreateEvent(), SetEvent() y WaitForMultipleObjects() desde el mundo de Win32.¿Hay un C++ multiplataforma ", llamado evento como el "CreateEvent()" en Win32?

Específicamente esto tiene que ser accesible en todos los procesos en la misma máquina.

Ya estamos usando Poco para algunas cosas de plataforma cruzada, pero no veo que el Poco :: Event sea lo que quiero. Tal vez me falta algo.

EDITAR:

T o explicar lo que quiero hacer:

Quiero que el proceso B sepa cuando algo sucede en el proceso A. Esto es trivial en win32 - Cada proceso/hilo llama a CreateEvent() con un nombre para el evento. El proceso B llama a waitForXObject() y Process A llama a SetEvent() cuando sucede algo. B es señalado.

De nuevo, esto es trivial en win32, pero cómo hacerlo multiplataforma.

+0

¿Puedes explicarme más sobre lo que intentas hacer? No hay ningún equivalente en C++, existen bibliotecas que podrían funcionar para usted. Me parece que lo que podría necesitar es algún middleware para poner sus cosas (por supuesto, estoy adivinando) –

+0

@Romain - Agregué detalles. Sé que no hay primitivos de C++. Lo que estoy buscando son maneras de hacerlo EN C++, no un cambio de idioma. – Tim

+1

Mira mi respuesta que quieres boost :: named_condition, no hay una forma incorporada en C++ para hacer esto sin una biblioteca como boost. –

Respuesta

4

No hay está construido en forma de C++ para hacer eventos con nombre. Pero puedes usar boost para hacerlo.

Usted está buscando boost::condition y boost::named_condition

Como también se ha mencionado existe: Poco.NamedEvent

+0

Me falta algo, ¿cómo especifico un mutex/condición particular? – Tim

+0

ah - "named" es la parte clave. Gracias – Tim

2

boost tiene varias primitivas de subprocesamiento multiplataforma como esta.

vistazo a impulso: mutex

En realidad, mira Cross-Platform equivalent to windows events

+0

Lo había visto cuando busqué SO inicialmente antes de publicar, pero no vi una forma de "nombrar" los eventos en esa respuesta. – Tim

+0

Conclusión de ese hilo: boost o Qt, lo que prefiera – Pieter

1

Uy - Después de ver la respuesta de Brian acerca de los eventos mencionados parece que me perdí solución de Poco:

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

Sólo había visto Poco.Event

Probablemente lo usemos, ya que parece ser más simple y ligero en el código del cliente.

Cuestiones relacionadas