7
votes

Boost équivalent pour les événements de Windows

dans Windows C ++, je peux créer une poignée à l'événement

poignée H = crééeevent (...)

Je peux ensuite définir et réinitialiser cet événement

Setevent (...) et ResetEvent (...)

Enfin, je peux ouvrir des OpenEvent à l'aide de la commande ouverteEvent (...)

Y a-t-il un boost équivalent pour les événements?


2 commentaires

Avez-vous besoin de l'aspect IPC multi-processus de ouvertEvent ou avez-vous seulement besoin de communication-processus?


Même si ce n'est pas strictement un duplicata, ce Stackoverflow. com / questions / 1677070 / ... question pose la bonne réponse à votre question.


4 Réponses :



6
votes

Je pense que vous devez utiliser boost :: mutex , boost :: unique_lock , boost :: Condition_variable et éventuellement BOOL Pour imiter les événements.

Vous pourriez en réalité avoir besoin de sorte de waitforsingleObject afin d'attendre un événement. Pourrait être comme ceci: xxx


0 commentaires

0
votes

Ce que vous voulez est Named_Condition variable du Boost Interprocess Library . La principale différence entre les événements Windows est que vous devez les utiliser conjointement avec un nommé_mutex .

Remarque, vous pouvez utiliser ces primitives d'interprocès de boost dans un processus unique. Je suppose que vous en avez besoin parce que vous utilisez OpenEvent (qui implique le partage de l'objet en utilisant un nom). Si vous pouvez éviter d'utiliser un nom, vous pouvez utiliser les variantes non nommées à partir du Boost thread Bibliothèque.


2 commentaires

IPC n'est pas requis conformément à l'auteur. Outre Nom mutexes si une application se bloque ne sont pas retirées automatiquement. Et en conséquence, après un ajoute des mutexs nommés, il doit également gérer une certaine manière cette sittion. IMHO, cela crée simplement une complexité non spécifique.


Ce n'est pas nécessaire selon l'auteur, mais cette partie de la question est enterrée dans un commentaire sous la question. C'est la bonne réponse sans ce commentaire.



4
votes

the threadsafe Boost Signals2 bibliothèque pourrait être de Utilisez-vous pour vous. La bibliothèque de signaux d'origine n'était pas du thread-coffre-fort, mais a mis en place un cadre de signaux / machines à sous qui n'est pas trop nombreux kilomètres des idées d'événements. Étant donné que Signals2 est threadsafe, vous devriez pouvoir l'utiliser pour passer des événements entre fils.


0 commentaires