मेरे मल्टीथ्रेड किए गए जीयूआई एप्लिकेशन में मेरे पास निम्न सिग्नल हैंडलिंग कोड है। मैं इतना है कि यह सही है और सूत्रण सुरक्षित हो जाएगा इस कोड में सुधार करना चाहते हैं, लेकिन वहाँ कुछ चीजें संकेत हैंडलिंग में मैं पूरी तरह से समझ में नहीं आता हैं:मल्टीथ्रेडेड वातावरण में सिग्नल हैंडलर फ़ंक्शन
- संकेत प्रक्रिया या धागे स्तर पर नियंत्रित किया जाता है (मैं धागा हो सकता है विशिष्ट सिग्नल हैंडलर)?
- जिसमें थ्रेड संदर्भ सिग्नल_हैंडलर फ़ंक्शन निष्पादित है?
- क्या कम समय में कई सिगरेट सिग्नल भेजना संभव है?
- क्या सिग्नल_हैंडलर के समानांतर निष्पादन को रोकने के लिए एक म्यूटेक्स का उपयोग करना समझ में आता है?
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);
}
मैं अपने init समारोह में संकेत संचालकों रजिस्टर:
// register signal handlers
signal(SIGTERM, signal_handler);
signal(SIGINT, signal_handler);
signal(SIGUSR1, signal_handler);
नोट सिग्नल हैंडलर में std :: परमाणु का उपयोग लॉक-मुक्त कार्यान्वयन की गारंटी नहीं देता है। कृपया देखें: http://www.informit.com/articles/article.aspx?p=2204014 – Corvusoft