2010-04-19 8 views
7

Sto cercando qualcosa di analogo a CreateEvent(), SetEvent() e WaitForMultipleObjects() dal mondo Win32.C'è un C++ cross-platform "chiamato evento come il "CreateEvent()" in Win32?

Specificamente questo deve essere accessibile attraverso processi sulla stessa macchina

Stiamo già usando Poco per alcune cose cross-platform, ma non vedo che il Poco :: Event è ciò che voglio, forse mi manca qualcosa.

MODIFICA:

T o spiega cosa voglio fare:

Voglio che il processo B sappia quando qualcosa accade nel processo A. Questo è banale in win32 - Ogni processo/thread chiama CreateEvent() con un nome per l'evento. Process B chiama waitForXObject() e Process A chiama SetEvent() quando succede qualcosa. B è segnalato.

Anche in questo caso, questo è banale in Win32, ma come farlo cross-platform.

+0

Puoi spiegare di più cosa stai cercando di fare? Non esiste un equivalente in C++, ci sono librerie che potrebbero funzionare per te. Mi sembra che quello di cui potresti avere bisogno sia un po 'di middleware su cui mettere le tue cose (Ovviamente immagino) –

+0

@Romain - Ho aggiunto i dettagli. So che non ci sono primitive in C++. Quello che sto cercando sono modi per farlo IN C++, non un cambio di lingua. – Tim

+1

Vedere la mia risposta che vuoi boost :: named_condition, non esiste un metodo C++ integrato per farlo senza una libreria come boost. –

risposta

4

Non v'è alcun costruito in modo in C++ per fare eventi di nome. Ma puoi usare boost per farlo.

Siete alla ricerca di boost::condition e boost::named_condition

Come anche lei ha citato esiste: Poco.NamedEvent

+0

Mi manca qualcosa - come posso specificare un particolare mutex/condizione? – Tim

+0

ah - "named" è la parte chiave. Grazie – Tim

2

boost ha un numero di primitive di threading multipiattaforma come questo.

sguardo a spinta: mutex

In realtà, guarda Cross-Platform equivalent to windows events

+0

L'avevo visto quando ho cercato SO inizialmente prima di postare, ma non ho visto un modo per "nominare" gli eventi in quella risposta. – Tim

+0

Conclusione da quel thread: boost o Qt, quale preferite – Pieter

1

oops - Dopo aver visto la risposta di Brian sugli eventi denominati sembra Ho perso soluzione Poco:

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

Ho visto solo Poco.Event

Probabilmente lo useremo dal momento che sembra essere più semplice e leggero nel codice client.