बहु लड़ी पिरोया में अतुल्यकालिक सिग्नल से निपटने लिनक्स प्रोग्रामिंग इंटरफ़ेस बुक एक बहु लड़ी कार्यक्रम में अतुल्यकालिक संकेतों के साथ निपटने के लिए एक विधि का उल्लेख किया गया है:कार्यक्रम
- सभी थ्रेड अतुल्यकालिक संकेतों के सभी ब्लॉक कि इस प्रक्रिया प्राप्त हो सकता है। करने का सबसे आसान तरीका यह किसी अन्य थ्रेड बनाए जाने से पहले मुख्य थ्रेड में संकेतों को अवरुद्ध करना है। प्रत्येक बाद निर्मित थ्रेड मुख्य धागे के सिग्नल मास्क की एक प्रति प्राप्त करेगा।
- एक समर्पित समर्पित थ्रेड बनाएं जो
sigwaitinfo()
,sigtimedwait()
याsigwait()
का उपयोग कर आने वाले संकेतों को स्वीकार करता है।इस दृष्टिकोण का लाभ यह है कि एसिंक्रोनस रूप से उत्पन्न संकेतों तुल्यकालिक प्राप्त हो रहा है। यह भेजे संकेतों, समर्पित धागा सुरक्षित रूप से साझा चर (म्युटेक्स नियंत्रण में) को संशोधित करने और गैर async-सुरक्षित कार्यों कॉल कर सकते हैं स्वीकार करता है के रूप में। यह सिग्नल स्थिति चर, और अन्य थ्रेड और प्रक्रिया संचार और सिंक्रनाइज़ेशन तंत्र को भी लागू कर सकता है।
अब सवाल:
- जब गिरी संकेत यह प्रक्रिया मनमाने ढंग से अंदर धागे से एक का चयन वितरित करने के लिए चाहता है। जहां से समर्पित धागे को संकेत देने के लिए यह पता चल सकता है?
- pthread API गैर-एंक-सुरक्षित फ़ंक्शन है। तो हम सिग्नल हैंडलर के अंदर उनका उपयोग कैसे कर सकते हैं?
संकेतों को अवरुद्ध करने के लिए सिग्नेक्शन का उपयोग नहीं किया जाता है, सिगप्रोकमास्क और pthread_sigmask देखें। –
@ToddFreed: मानो या नहीं, वास्तव में मेरा मतलब था ... निश्चित; धन्यवाद – Nemo