signal-handler-Funktion in multithreaded-Umgebung

In meinem Multithread-GUI-Anwendung habe ich die folgenden signal-handling-code. Ich möchte, um dies zu verbessern-code so, dass es richtig ist und Gewindeschneiden sicher, aber es gibt einige Dinge, die ich nicht vollständig verstehen, in der signal-handling:

  • ist das signal verarbeitet auf den Prozess oder thread-Ebene (kann ich die thread-spezifische signal-Handler) ?
  • in dem thread-Kontext ist signal_handler Funktion ausgeführt ?
  • ist es möglich, SIGTERM senden viele Signale in kurzer Zeit ?
  • macht es Sinn, einen mutex verwenden, um zu verhindern, dass die parallele Ausführung von signal_handler ?

void signal_handler(int sig)
{
        switch (sig)
        {
        case SIGTERM:
            ::wxLogMessage(wxT("SIGTERM signal received ..."));
            break;
        case SIGINT:
            ::wxLogMessage(wxT("SIGINT signal received ..."));
            break;
        case SIGUSR1:
            ::wxLogMessage(wxT("SIGUSR1 signal received ..."));
            break;
        default:
            ::wxLogMessage(wxT("Unknown signal received ..."));
        }

        //send wxCloseEvent to main application window
        ::wxGetApp().GetTopWindow()->Close(true);
}

Ich mich registrieren signal-Handler in meiner init-Funktion:

//register signal handlers
signal(SIGTERM, signal_handler);
signal(SIGINT,  signal_handler);
signal(SIGUSR1, signal_handler);
InformationsquelleAutor tommyk | 2012-10-18
Schreibe einen Kommentar