सिग्नल और स्लॉट

सिग्नल और स्लॉट Qt (टूलकिट) में पेश की गई एक भाषा निर्माण है वस्तुओं के बीच संचार के लिए जो बॉयलरप्लेट कोड से बचते हुए पर्यवेक्षक पैटर्न को लागू करना आसान बनाता है। अवधारणा यह है कि जीयूआई जीयूआई विजेट घटना की जानकारी वाले सिग्नल भेज सकता है जिसे स्लॉट के रूप में जाने जाने वाले विशेष कार्यों का उपयोग करके अन्य विजेट/नियंत्रण द्वारा प्राप्त किया जा सकता है। यह C/C++ फ़ंक्शन पॉइंटर्स के समान है, लेकिन सिग्नल/स्लॉट सिस्टम कॉलबैक तर्कों की प्रकार-शुद्धता सुनिश्चित करता है।

सिग्नल/स्लॉट सिस्टम ग्राफिकल यूज़र इंटरफ़ेस डिज़ाइन करने के तरीके के साथ अच्छी तरह से फिट बैठता है। इसी तरह, सिग्नल/स्लॉट सिस्टम का उपयोग अन्य गैर-जीयूआई उपयोगों के लिए किया जा सकता है, उदाहरण के लिए एसिंक्रोनस I/O (सॉकेट, पाइप, सीरियल डिवाइस इत्यादि सहित) ईवेंट अधिसूचना या टाइमआउट ईवेंट को उचित ऑब्जेक्ट इंस्टेंस और विधियों या फ़ंक्शंस के साथ संबद्ध करने के लिए। इसका उपयोग करना आसान है और कोई पंजीकरण/पंजीकरण/आह्वान कोड लिखने की आवश्यकता नहीं है, क्योंकि क्यूटी का मेटाऑब्जेक्ट कंपाइलर (एमओसी) स्वचालित रूप से आवश्यक बुनियादी ढांचा तैयार करता है।

एक स्प्रेडशीट प्रोग्राम अपडेट सिस्टम को सिग्नल और स्लॉट का उपयोग करके कार्यान्वित किया जा सकता है, ताकि जब कोई सेल बदला जाए, तो उसके आश्रित सेल को सूचित/अपडेट किया जा सके।

वैकल्पिक कार्यान्वयन
C++ टेम्प्लेट पर आधारित सिग्नल/स्लॉट सिस्टम के कुछ कार्यान्वयन हैं, जिन्हें अतिरिक्त मेटाऑब्जेक्ट कंपाइलर की आवश्यकता नहीं होती है, जैसा कि Qt द्वारा उपयोग किया जाता है, जैसे कि libsigc++, sigslot, vdk-signals, -स्लॉट नैनो-सिग्नल-स्लॉट, neosigslot, सिग्नल, boost.signals2, Synapse, p/cpp-events Cpp::Events, प्लैटिनम, JBroad ढलाईकार और KDBindings। सीएलआई भाषाओं की सूची (सीएलआई) भाषाएं जैसे सी शार्प (प्रोग्रामिंग भाषा) | सी # भी एक समान निर्माण का समर्थन करती है, हालांकि एक अलग शब्दावली और वाक्यविन्यास के साथ: घटनाएं सिग्नल की भूमिका निभाती हैं, और प्रतिनिधि (सीएलआई) स्लॉट हैं। ActionScript 3.0 के लिए सिग्नल का एक और कार्यान्वयन मौजूद है, जो Qt में C# इवेंट और सिग्नल/स्लॉट से प्रेरित है। इसके अतिरिक्त, एक प्रतिनिधि एक स्थानीय चर हो सकता है, एक फ़ंक्शन सूचक की तरह, जबकि क्यूटी में एक स्लॉट एक क्लास सदस्य के रूप में घोषित होना चाहिए। C आधारित GObject प्रणाली भी GSignal के माध्यम से समान कार्यक्षमता प्रदान करती है। डी में इसे std.signals द्वारा कार्यान्वित किया जाता है।

यह भी देखें

 * प्रेक्षक पैटर्न
 * सिग्नल प्रोग्रामिंग
 * प्रतिनिधि (सीएलआई)

पुस्तकालय
जावा: sig4j - मल्टी-थ्रेडेड, टाइप-सेफ, जावा 8 में पेश किए गए FunctionalInterface एनोटेशन पर आधारित है।

सी++: vdk-signals - थ्रेड-सुरक्षित, टाइप-सुरक्षित, परमाणु चर के साथ C++11 में लिखा गया है।