dans Windows C ++, je peux créer une poignée à l'événement P>
poignée H = crééeevent (...) p>
Je peux ensuite définir et réinitialiser cet événement P>
Setevent (...) et ResetEvent (...) p>
Enfin, je peux ouvrir des OpenEvent à l'aide de la commande ouverteEvent (...) p>
Y a-t-il un boost équivalent pour les événements? P>
4 Réponses :
Un boost verrouillage < / a> (mutex) ferait à peu près la même chose. Vous pouvez attendre sur ceux-ci. P>
Pas nécessairement. Je souhaite courir une boucle tandis que dans le fil un enfer tout jusqu'à ce que le fil b déclenche un événement.
alors utilisez "chronométré_lock (mutex, délai d'attente)" à l'intérieur de votre boucle
Je ne veux pas de timings entrant en jeu. Je veux simplement un déclencheur d'événement. Lorsque l'utilisateur clique sur un bouton qui provoque un événement.
Je pense que vous devez utiliser Vous pourriez en réalité avoir besoin de sorte de boost :: mutex code>,
boost :: unique_lock code>,
boost :: Condition_variable Code> et éventuellement
BOOL Code> Pour imiter les événements.
waitforsingleObject code> afin d'attendre un événement. Pourrait être comme ceci: p>
Ce que vous voulez est Named_Condition variable A> du Boost Interprocess Library . La principale différence entre les événements Windows est que vous devez les utiliser conjointement avec un nommé_mutex . P>
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. P>
IPC n'est pas requis conformément à l'auteur. Outre Nom mutexes code> 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.
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. P>
Avez-vous besoin de l'aspect IPC multi-processus de
ouvertEvent code> 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.