2010-12-08 7 views
0

Einige Informationen: Ich muss ein Programm schreiben, das einige Geräte steuert (das ist Grundfunktionalität). Aber ich muss eine Art Plugin-System schreiben, um andere benutzerdefinierte Funktionen zu ermöglichen. Ich habe keine Möglichkeit, diese Source-Qualität der Plugins zu kontrollieren, also dachte ich mir, dass ich für jedes geladene Plugin einen Thread erstellen werde, und dann wird es in seiner eigenen Hauptschleife laufen. Ich bin in der Lage, Standard-C++ - Ausnahmen zu verstehen, aber das Problem ist, dass ich keine Ahnung habe, wie ich mit Signalen umgehen soll. Der beste Weg wäre, asynchron den Plugin-Thread abzubrechen, um ihm die Möglichkeit zu geben, Ressourcen zu bereinigen und Ressourcen zu löschen oder ihn einfach zu töten, aber nicht wissen, wie er herausfinden kann, welcher Thread das aktuelle Signal verursacht. Gibt es eine Möglichkeit, dies zu tun, ohne die aktuell ausgeführten Thread-Informationen explizit in einer Variablen zu speichern? Oder das ist total schlechte Idee und ich sollte separaten Prozess erstellen und dann das Plugin ausführen?Killing Thread verursacht SIGSEGV

Antwort

0

Ja, das ist total eine schlechte Idee. Threads sind eine kooperative, teilen fast alles, Programmiermodell, das keine Isolierung bietet. Es ist nur das falsche Werkzeug für diesen Job.

0

Ich würde traditionelle Verfahren verwenden, um vollständige Isolierung zu erhalten und IPC-Mechanismus für die Kommunikation zu verwenden.