सामान्य थ्रेड पूलिंग में, आप अपने स्टार्ट-अप समय और रन टाइम के बीच तुलना के आधार पर शॉर्ट-रनिंग और लंबे समय से चलने वाले धागे को अलग करते हैं।
थ्रेड आमतौर पर कुछ बनाने के लिए समय लेते हैं और उस बिंदु तक पहुंच जाते हैं जहां वे आपका कोड चला सकते हैं।
इसका मतलब है कि यदि आप बड़ी संख्या में धागे चलाते हैं, जहां वे प्रत्येक को शुरू करने में एक मिनट लगते हैं लेकिन केवल एक सेकंड के लिए दौड़ते हैं (सटीक समय नहीं बल्कि यहां का इरादा केवल रिश्ते दिखाने के लिए है), प्रत्येक का रन टाइम उन्हें पहले स्थान पर जाने के लिए लिया गया समय से घिरा जाएगा।
का उपयोग करके थ्रेड पूल का उपयोग कर कारणों में से एक कारण है: उनके काम पूरा होने के बाद थ्रेड समाप्त नहीं होते हैं। इसके बजाए, वे पुन: उपयोग करने के लिए चारों ओर लटकाते हैं ताकि स्टार्ट-अप समय फिर से नहीं किया जा सके।
तो, इस अर्थ में, एक लंबा चलने वाला धागा वह है जिसका रन टाइम इसे शुरू करने के लिए आवश्यक समय से कहीं अधिक है। उस स्थिति में, स्टार्ट-अप समय कम चलने वाले थ्रेड के लिए बहुत कम महत्वपूर्ण है।
इसके विपरीत, लघु चलने वाले धागे वे हैं जिनके रन टाइम स्टार्ट-अप समय से कम या तुलनीय हैं।
नेट के लिए विशेष रूप से, यह एक थोड़ा आपरेशन में अलग है। थ्रेड पूलिंग कोड, एक बार यह थ्रेड की न्यूनतम संख्या तक पहुंचने के बाद, थ्रेड सृजन को एक आधे सेकेंड तक सीमित करने का प्रयास करेगा।
इसलिए, यदि आप जानते हैं आपका धागा लंबे समय तक चलने वाला है, तो आपको शेड्यूलर को सूचित करना चाहिए ताकि वह तदनुसार स्वयं को समायोजित कर सके। यह शायद का अर्थ केवल पूल से एक को पकड़ने के बजाय नया धागा बनाना है, ताकि पूल को शॉर्ट-रनिंग कार्यों को सेवा के रूप में छोड़ दिया जा सके (उस व्यवहार पर कोई गारंटी नहीं है लेकिन इसे करने में यह समझदारी होगी उस तरफ)।
हालांकि, कि अर्थ लंबे समय से चल रहा है और कम चल रहा है की परिवर्तन नहीं करता है, सभी इसका मतलब है कि वहाँ है कि कुछ सीमा, जिस पर यह समझ में आता है दोनों के बीच अंतर है। .NET के लिए, मैं सुझाव दूंगा कि आधा सेकेंड आंकड़ा एक सभ्य विकल्प होगा।
मुझे लगता है कि प्रमुख मुद्दा अवरुद्ध करने की संभावना है लघु या लंबे समय के रूप प्रासंगिक नहीं है –
मैं यहाँ @DavidHeffernan के साथ समझौते में हूँ –