J'utilise le framework ACE, mais je vais essayer de décrire mon problème sans y faire référence.shared_ptr puzzle
J'ai un gestionnaire d'événements (classe dérivée de ACE_Event_Handler). La référence au gestionnaire d'événements est conservée par une classe de gestionnaire dans les mappes de shared_ptr.
À un certain moment je veux:
- supprimer le gestionnaire d'événements de carte du gestionnaire
- une méthode de gestionnaire d'événements doit être appelé par le 3e classe qui détient le pointeur de ligne au gestionnaire d'événements (pour ceux qui sont familiers avec ACE c'est handle_close() appelé par ACE Reactor)
Le problème est que l'ordre (1) et (2) n'est pas promis. Si (1) est appelé avant (2), (2) fonctionnera sur le gestionnaire d'événement suspendu. J'ai donc pensé à ajouter une référence supplémentaire au gestionnaire d'événements qui sera décrémentée dans (2).
Comment cela peut-il être fait? La référence au gestionnaire d'événements peut-elle être gérée depuis le gestionnaire d'événements lui-même (probablement en utilisant enable_shared_from_this)?
Merci
+1 merci pour le lien. Je suis entièrement d'accord avec vos suggestions. Hovewer ils ne sont pas applicables dans ma situation. – dimba