Bonjour.
j'ai une dll qui utilise un singleton pour manager des ressources. Ces ressources instancient des std::thread, std::mutex et std::shared_mutex.
Le singleton est instancié lors de l'appel à une fonction static
Malheureusement, ceci pose problème si un utilisateur appel la méthode exit().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class singleton { public static singleton ¤t() { static singleton _singl; return _singl } };
Lors de l'appel à exit, la destruction du singleton crash car les thread se sont arrêtés sans libérer les mutex.
La seule manière que j'ai trouvée est de modifier l'instanciation du singleton en utilisant un pointeur et d'ajouté une fonction pour le détruire(doit être appelé par l'utilisateur avant de sortir du main). Mais lors d'un exit rien n'est libéré proprement.
Y a t'il une possibilité d’empêcher l’arrêt brutale des thread lors de l'appel à un exit et de pouvoir libérer proprement les données de ma dll?
merci,
Yan
Partager