Comment détruire un thread ?
salut à tous,
je voudrais implémenter ce mode de recherche dans un "annuaire" :
quand l'utilisateur change un critère de recherche :
-si un thread est lancé, on le détruit
-lance un nouveau thread avec les nouveaux critères de recherche
-n'attend pas la fin du thread
le thread consiste à envoyer une requete de sélection à une base de donnée mysql, à récupérer dans un vecteur tampon le résultat, et à afficher dans une TreeView.
ce qui me pose problème c'est la destruction du thread, j'utilise les threads de la Glibmm, avec une interface construit sur Gtkmm.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
// vide le contenu de la TreeView
// récupère les critères de sélection
// si un thread est déjà lancé
if (!_M_job_thread_ptr)
{
// on le détruit, mais comment ??
_M_job_thread_ptr = NULL;
}
// création du nouveau thread
_M_job_thread_ptr = Glib::Thread::create(sigc::mem_fun(this, &recherche_client::store_thread), true);
// continue l'éxécution
_M_job_thread_ptr->yield(); // est-ce la bonne méthode ? |
tel-quel, ce code fait planté l'application, sans utilisé un thread, le reste du code fonctionne mais "freeze" l'interface.
une idée ??