Bonjour a tous,

J'ai un cas de figure un peu particulier, et �tant d�butant en C++, j'aimerais votre avis sur la marche a suivre.

Le contexte d'ex�cution:

App java -> charge dynamic lib A (en C++) -> charge dynamic lib B (en C).

App java est une application qui est 'self recoverable' elle g�re donc les erreurs de mani�re gracieuse et peut recharger les modules qui �chouent en garantissant un fonctionnement continu, dans les limites du possible et raisonnable bien sur.

Elle s'appuie sur lib A pour certaines op�rations, lib A dont donc garantir la m�me robustesse et est charg�e en continu(java ne permet pas de d�charger une lib dynamique).
Lib A doit charger dynamiquement(dlopen et consorts) une lib B pour certaines op�rations, et la d�charger au terme de ces op�rations, il y a plusieurs impl�mentations diff�rentes de lib B qu'il est possible de charger suivant le besoin courant.

Lib A doit donc pour chaque chargement de lib B allouer des ressources propre a cette impl�mentation sp�cifique et les rel�cher au terme de l'utilisation afin de garantir un contexte sain pour le prochain chargement et bien sur �viter les fuites m�moires.

Tout ca pour en venir aux contraintes:
1) Lib A ne peut pas cesser de fonctionner.
2) Lib A doit faire plusieurs r�initialisation complets au cours de son cycle de vie.
3) Lib A utilise des ressources bas niveau: fichiers, connexion r�seau, vfs entoures par des wrappers...

En utilisant le RAII, lors de la r�initialisation du contexte, les destructeurs des wrappers peuvent donc lancer des exception, je vois plusieurs solutions mais aucune satisfaisante:

Laisser l'exception se propager: le wrapper �tant d�truit avant la propagation, on ne peut plus rien faire pour la ressource toujours ouverte, l'application pouvant rester charg�e sur une dur�e ind�termin�e(jours/semaines) le risque de starvation augmente au fil du temps.
Catch exception dans le destructeur et garder le handler de la ressource dans un systeme async qui va r�essayer le nettoyage? complexe mais dans le domaine du possible.
noexept: terminer le processus va a l'encontre de la contrainte 1


Quels sont vos conseils?

Merci.