multithread, singleton et exit
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
Code:
1 2 3 4 5 6 7 8 9
| class singleton
{
public
static singleton ¤t()
{
static singleton _singl;
return _singl
}
}; |
Malheureusement, ceci pose problème si un utilisateur appel la méthode exit().
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