2010-12-08 49 views
0

Quelques informations: je dois écrire un programme qui contrôle certains périphériques (ceci est une fonctionnalité de base). Mais je dois écrire une sorte de système de plugin pour activer d'autres fonctionnalités personnalisées. Je n'ai aucun moyen de contrôler la qualité de la source de ces plugins, donc j'ai pensé que je vais créer un fil pour chaque plugin chargé, puis il fonctionnera dans sa propre boucle principale. Je suis capable d'attraper les exceptions C++ standard mais le problème est que je n'ai aucune idée de la façon de traiter les signaux. Le meilleur moyen serait d'annuler de façon asynchrone le thread du plugin pour lui donner la chance de nettoyer et de libérer des ressources ou simplement le tuer mais ne savez pas comment trouver le fil qui provoque le signal actuel. Existe-t-il un moyen de faire cela sans explicitement sauvegarder les informations de threads actuellement excutées dans certaines variables? Ou c'est totalement mauvaise idée et je devrais créer un processus séparé et ensuite exécuter le plugin?thread meurtrier provoquant SIGSEGV

Répondre

0

Oui, c'est totalement une mauvaise idée. Les threads sont une coopérative, partagent presque tout, un modèle de programmation qui ne fournit aucune isolation. C'est juste le mauvais outil pour ce travail.

0

Je voudrais utiliser un processus traditionnel pour obtenir une isolation totale et utiliser le mécanisme IPC pour la communication.