This is a link to an MCVE that demonstrates the deadlockPourquoi le blocage inter-processus de boost est-il dans notify_one?
Il contient cinq parties:
SharedEvent est une implémentation d'un AutoResetEvent qui est stocké dans la mémoire partagée. CreatedSharedEvent crée un objet de mémoire partagée nommé dans lequel un événement SharedEvent est alloué. Il fournit une méthode d'accès qui renvoie une référence à SharedEvent. OpenedSharedEvent ouvre un objet de mémoire partagée nommé dans lequel un objet SharedEvent a déjà été alloué. Il fournit également une méthode accesseur qui renvoie une référence à SharedEvent.
Une application de console de serveur qui crée un événement SharedEvent à l'aide d'un événement CreatedShareEvent et définit l'événement toutes les 2 secondes. Il imprime un message à chaque fois que l'événement est défini.
Une application de console qui ouvre l'événement partagé à l'aide d'un OpenedShareEvent et attend l'événement dans une boucle. Il imprime un message chaque fois que l'appel d'attente revient.
Pour reproduire le problème:
exécuter le serveur. Observez les messages imprimés toutes les 2 secondes.
Exécutez le client. Observez les messages imprimés toutes les 2 secondes.
Fermez le client. Observez que le serveur cesse d'imprimer des messages. Il est bloqué dans interprocess_condition :: notify_one()
Encore une fois [vous venez à nous avec beaucoup de prose, et pas de code] (https://stackoverflow.com/questions/44982935/can-boosts-interprocess-segment-manager-allocators-be-themselves-shared- avec-ot/44987240 # comment76944259_44982935). "Ce qui pourrait causer l'impasse" - un certain nombre de choses. Nous sommes plus susceptibles de voir si nous pouvons [_voir votre code_] (https://stackoverflow.com/questions/44982935/can-boosts-interprocess-segment-manager-allocators-be-themselves-shared-with-ot/44987240 # comment76954354_44987240). – sehe
Cette fois, je vais attendre que vous fassiez un [SSCCE] (http://sscce.org/) ou [MCVE] (https://stackoverflow.com/help/mcve). Les liens vous disent comment. Ma réponse précédente _show you_ comment. – sehe
J'ai fourni un lien vers le MCVE dans ma question éditée –