" सिग्नल जनरेशन एंड डिलीवरी " पर "Rationale: System Interfaces General Information" में POSIX में प्रविष्टि कहती है
एक प्रक्रिया के लिए उत्पन्न सिग्नल केवल एक धागे में वितरित किए जाते हैं। इस प्रकार, यदि एक संकेत प्राप्त करने के लिए एक से अधिक थ्रेड योग्य हैं, तो एक को चुनना होगा। थ्रेड्स का चुनाव पूरी तरह से कार्यान्वयन के लिए छोड़ दिया जाता है, दोनों को अनुरूप कार्यान्वयन की व्यापक संभव सीमा की अनुमति देने के लिए और कार्यान्वयन को "सबसे आसान संभव" धागे को संकेत देने की स्वतंत्रता देने के लिए अलग-अलग थ्रेड्स के बीच वितरण में आसानी में अंतर होना चाहिए।
signal(7)
लिनक्स सिस्टम पर मैनुअल से :
किसी प्रक्रिया के लिए एक संकेत (या इस तरह लंबित) उत्पन्न हो सकता है (जैसे, जब उपयोग किया जाता है kill(2)
) या किसी विशिष्ट थ्रेड के लिए (जैसे, कुछ संकेत, जैसे कि SIGSEGV और SIGFPE, एक विशिष्ट मशीन को निष्पादित करने के परिणामस्वरूप उत्पन्न होते हैं- भाषा निर्देश थ्रेड निर्देशित हैं, जैसा कि एक विशिष्ट थ्रेड पर लक्षित संकेतों का उपयोग करके किया जाता है pthread_kill(3)
)। एक प्रक्रिया-निर्देशित संकेत उन थ्रेड्स में से किसी एक को दिया जा सकता है, जिसमें वर्तमान में संकेत अवरुद्ध नहीं है। यदि थ्रेड्स में से एक में सिग्नल अनब्लॉक है, तो कर्नेल एक मनमाना धागा चुनता है जिससे सिग्नल डिलीवर किया जा सके।
और में pthreads(7)
:
थ्रेड्स में अलग-अलग वैकल्पिक सिग्नल स्टैक सेटिंग्स हैं। हालाँकि, एक नए थ्रेड के वैकल्पिक सिग्नल स्टैक सेटिंग्स को उस थ्रेड से कॉपी किया जाता है जिसने इसे बनाया है, ताकि थ्रेड्स शुरू में एक वैकल्पिक सिग्नल स्टैक (कर्नेल 2.6.16 में तय) को साझा करें।
pthreads(3)
OpenBSD सिस्टम पर मैनुअल से (एक वैकल्पिक दृष्टिकोण के उदाहरण के रूप में):
सिग्नल हैंडलर सामान्य रूप से वर्तमान में निष्पादित धागे के ढेर पर चलाए जाते हैं।
(मुझे इस बात की जानकारी नहीं है कि मल्टी-प्रोसेसर मशीन पर कई थ्रेड समवर्ती निष्पादित होने पर इसे कैसे संभाला जाता है)
POSIX थ्रेड्स के पुराने LinuxThread कार्यान्वयन ने केवल संकेतों के आधार पर अलग-अलग एकल थ्रेड्स को लक्षित करने की अनुमति दी। से pthreads(7)
एक Linux सिस्टम पर:
LinuxThreads प्रक्रिया-निर्देशित संकेतों की धारणा का समर्थन नहीं करता है: संकेत केवल विशिष्ट थ्रेड्स को भेजे जा सकते हैं।