दिलचस्प पोस्ट
कैसे JTable में कोशिकाओं केंद्र के लिए strdup () – यह सी में क्या करता है? WampServer के साथ रेल पर रूबी को कैसे स्थापित करें? 'std :: cout' के लिए अनिर्धारित संदर्भ X86 पर गलत-गठबंधन संकेतक नक्शा एपीआई v2 के साथ मैपफ्रैग्मेंट प्रोग्रामेटिक रूप से आरंभ करें पायथन में बैश बैकिक्स के समतुल्य सबसे तेज़ कौन है? `तालिका` से SQL_CALC_FOUND_ROWS का चयन करें, या SELECT COUNT (*) क्या सॉकेट के साथ रिएक्ट मूल भाषा को जोड़ना संभव है एक NumPy सरणी को एक सीएसवी फ़ाइल में डंप करें ऑब्जेक्ट की क्लास (जावा में) कैसे निर्धारित करें? सामान्य सीएसएस मीडिया क्वेरी ब्रेक पॉइंट्स Request.UrlReferrer null? क्या सिस्टम एराकॉपी (…) का उपयोग एरे के प्रतिलिपि के लिए लूप से बेहतर है? @ फ़ॉन्ट-मुख फोंट केवल अपने डोमेन पर कार्य करते हैं

डेमन थ्रेड स्पष्टीकरण

पायथन दस्तावेज़ में यह कहते हैं:

एक थ्रेड को "डेमन थ्रेड" के रूप में फ्लैग किया जा सकता है इस ध्वज का महत्व यह है कि पूरे पायथन कार्यक्रम से बाहर निकलता है जब केवल डेमन थ्रेड छोड़ दिए जाते हैं। प्रारंभिक मान को थ्रेड बनाने से विरासत में मिला है।

क्या किसी के पास स्पष्ट अर्थ है कि इसका मतलब क्या है या व्यावहारिक उदाहरण क्या दिखाता है कि आप थ्रेड को daemonic रूप में कैसे सेट करना चाहते हैं?


मेरे लिए स्पष्ट करने के लिए:

तो क्या आप थ्रेड को केवल डेमॉनिक के रूप में सेट नहीं करेंगे, यदि आप चाहते हैं कि वे मुख्य धागा निकास के बाद चलते रहें?

Solutions Collecting From Web of "डेमन थ्रेड स्पष्टीकरण"

कुछ थ्रेड्स पृष्ठभूमि कार्यों को करते हैं, जैसे कि पैलेट पैकेट भेजने या समय-समय पर कचरा संग्रहण, या जो कुछ भी यह केवल तब उपयोगी होता है जब मुख्य प्रोग्राम चल रहा है, और अन्य, गैर-डेमन, धागे से बाहर निकल जाने के बाद उन्हें मारना ठीक है।

डेमॉन धागे के बिना, आपको उनका ट्रैक रखना होगा, और उन्हें बाहर निकलने के लिए कहें, इससे पहले कि आपका कार्यक्रम पूरी तरह से बाहर निकल सके उन्हें डेमन धागे के रूप में सेट करके, आप उन्हें चलाने और भूल सकते हैं, और जब आपका कार्यक्रम समाप्त हो जाता है, तो कोई भी डेमॉन थ्रेड स्वचालित रूप से मार डाला जाता है

मान लीजिए कि आप किसी प्रकार का डैशबोर्ड विजेट बना रहे हैं। इस के हिस्से के रूप में, आप चाहते हैं कि यह आपके ईमेल बॉक्स में अपठित संदेश गिनता प्रदर्शित करे। तो आप एक छोटा धागा बनायेंगे जो:

  1. मेल सर्वर से कनेक्ट करें और पूछें कि आपके पास कितने अपठित संदेश हैं।
  2. अपडेट किए गए गिनती के साथ जीयूआई सिग्नल करें
  3. थोड़ी देर के लिए सो जाओ

जब आपका विजेट शुरू होता है, तो यह यह धागा बनायेगा, इसे एक डेमन नामित करेगा, और इसे शुरू करें क्योंकि यह एक डेमॉन है, आपको इसके बारे में सोचना नहीं है; जब आपका विजेट निकलता है, धागा स्वचालित रूप से बंद हो जाएगा।

इसके बारे में सोचने के लिए एक आसान तरीका, शायद: जब मुख्य रिटर्न, तब भी आपकी प्रक्रिया समाप्त नहीं होगी, अगर अभी भी चलने वाले गैर-डेमन थ्रेड नहीं हैं

थोड़ी सलाह: यदि थ्रेड्स और सिंक्रनाइज़ेशन शामिल होते हैं तो क्लीन शटडाउन गलत हो जाना आसान है – यदि आप इसे से बच सकते हैं, तो ऐसा करें। जब भी संभव हो तो डेमन थ्रेड का उपयोग करें

अन्य पोस्टर ने उन परिस्थितियों के लिए कुछ उदाहरण दिए जिनमें आप डेमन थ्रेड्स का उपयोग कर रहे थे। मेरी सिफारिश, हालांकि, उनका उपयोग कभी नहीं करना है।

ऐसा इसलिए नहीं है क्योंकि वे उपयोगी नहीं हैं, लेकिन क्योंकि आप उन कुछ बुरा दुष्प्रभावों का अनुभव कर सकते हैं जो आप उनका उपयोग करते हैं। पायथन रनटाइम मुख्य थ्रेड में चीजों को फाड़ना शुरू करने के बाद डेमन थ्रेड्स अभी भी निष्पादित कर सकते हैं, जिससे कुछ बहुत ही विचित्र अपवाद हो सकते हैं।

यहां अधिक जानकारी:

http://joeshaw.org/2009/02/24/605

http://mail.python.org/pipermail/python-list/2005-February/307042.html

कड़ाई से बोलते हुए आपको कभी उनकी ज़रूरत नहीं होती, कुछ मामलों में यह कार्यान्वयन आसान बनाता है

क्रिस ने पहले ही समझाया कि डेमन धागे क्या हैं, तो चलो व्यावहारिक उपयोग के बारे में बात करते हैं। कई धागा पूल कार्यान्वयन कार्य श्रमिकों के लिए डेमन धागे का उपयोग करते हैं। कार्यकर्ता थ्रेड्स हैं जो कार्य कतार से कार्य निष्पादित करते हैं।

कार्यकर्ता को कार्य कतार में कार्य के लिए अनिश्चित काल तक प्रतीक्षा करना जरूरी है क्योंकि उन्हें नहीं पता कि नया कार्य कब दिखाई देगा। थ्रेड जो कार्य सौंपा (मुख्य थ्रेड) केवल तब जानता है जब कार्य खत्म हो गया है मुख्य धागा रिक्त पाने के लिए कार्य कतार पर प्रतीक्षा करता है और फिर बाहर निकलता है। यदि श्रमिक उपयोगकर्ता थ्रेड्स हैं जैसे कि गैर-डेमन, प्रोग्राम समाप्त नहीं होगा। यह अनिश्चित काल तक चलने वाले श्रमिकों के लिए इंतजार कर रहा है, भले ही मजदूर उपयोगी कुछ नहीं कर रहे हैं श्रमिकों के डेमॉन थ्रेड्स को चिह्नित करें, और मुख्य थ्रेड उनको मारने का ध्यान रखेगा जैसे ही यह कार्य को संभालने का काम करता है

क्रिस का हवाला देते हुए: "… जब आपका कार्यक्रम समाप्त हो जाता है, तो कोई भी डेमॉन सूत्र स्वचालित रूप से मार डाला जाता है।" मुझे लगता है कि यह बताता है ऊपर जब आप उनका उपयोग करते समय सावधान रहना चाहिए, जब वे पूरा होने पर मुख्य प्रोग्राम निष्पादित करते हैं, तब अचानक ही समाप्त हो जाते हैं।