मैंने दूसरे दिन पढ़ा है कि लंबे समय तक चलने वाले कार्यों के लिए मेरी सबसे अच्छी शर्त मैन्युअल रूप से .NET के थ्रेड पूल या कार्य समानांतर का उपयोग करने के बजाय धागे बनाना है। मैं वास्तव में किसी को मुझे प्रबुद्ध करने के लिए पसंद करूंगा क्योंकि मैं सी # थ्रेडिंग के बारे में सीख रहा हूं, खासकर लंबे समय तक चलने वाले आईओ कार्यों के लिए। पहले ही, आपका बहुत धन्यवाद।क्या यह सच है कि लंबे समय तक चलने वाली प्रक्रियाओं के लिए थ्रेडपूल के बजाय मैन्युअल रूप से थ्रेड करना बेहतर होता है?
उत्तर
आप सही हैं, थ्रेडपूल थ्रेड हल्का और सस्ता है क्योंकि थ्रेडपूल से एक नया अनुरोध करने के लिए पुन: निर्धारित किया जा सकता है, इसलिए जैसे ही थ्रेड ऑपरेशन किया जाता है, थ्रेडपूल अन्य ऑपरेशन के लिए उसी धागे को फिर से निर्धारित कर सकता है, आप भी कुशलतापूर्वक उपयोग कर सकते हैं न्यूनतम धागे गिनती (ThreadPool.SetMinThreads()) द्वारा, इसलिए नए अनुरोध आने तक वे जीवित रहेंगे। तो यह कई हल्के संचालन के लिए एक अच्छा समाधान है, उदाहरण के लिए आपको प्रत्येक कुछ सेकंड में एक अलग/नया धागा बनाना होगा।
MSDN पत्रिका पर बहुत अच्छा लेख: Dedicated thread or a Threadpool thread?
एक बार धागे की न्यूनतम संख्या तक पहुँच जाता है, थ्रेड पूल सीमा धागे की संख्या 500 मिलीसेकेंड प्रति एक करने के लिए बनाया जा रहा है करना है। यह एक बुद्धिमान तंत्र है, की महंगी लागत से बचने पर एक नया धागा बनाते हैं जब कई थ्रेड पूल थ्रेड उस समय अवधि के भीतर जारी किए जा सकते हैं।
चूंकि .NET 4.0 - कार्य समांतर लाइब्रेरी मैनुअल थ्रेड प्रबंधन और सिंक्रनाइज़ेशन के लिए एक अच्छा उच्च स्तरीय अमूर्त और विकल्प है, इसलिए आपका कोड कम त्रुटि प्रवण होगा। तो TaskCreationOptions.LongRunning के साथ, मुझे विश्वास है कि यह रखरखाव दृष्टिकोण से एक अनुप्रयोग वास्तुकला में सबसे अच्छा निवेश होगा।
उपयोगी पढ़ने:
आपके दिशानिर्देशों के लिए बहुत बहुत धन्यवाद। – user1193665
यही सच है। थ्रेड पूल को काम की छोटी इकाइयों के लिए अनुकूलित किया गया है और आप थ्रेड पूल थ्रेड पर रखकर अन्य काम में हस्तक्षेप कर सकते हैं।
अंगूठे का मेरा नियम यह है कि यदि कोई ऑपरेशन एक सेकंड से अधिक समय ले सकता है, तो यह थ्रेड पूल थ्रेड पर नहीं होना चाहिए। यह शायद काफी लंबा है।
हालांकि यह अनियंत्रित है, यदि आप Task
TaskCreationOptions.LongRunning
के साथ प्रारंभ करते हैं तो कार्य को चलाने के लिए एक नया थ्रेड शुरू किया जाएगा।
अधिकांश आईओ कार्यों के लिए, फ्रेमवर्क विधियों के असीमित संस्करण हैं जिनका आपको वास्तव में उपयोग करना चाहिए। ये कर्नेल कार्यों का उपयोग करते हैं और इसका मतलब है कि आप किसी भी धागे को अवरुद्ध नहीं करेंगे।
हमेशा की तरह, मैं Joe Albahari's free ebook, पढ़ने के बाद Joe Duffy's Concurrent Programming on Windows पढ़ने की अनुशंसा करता हूं। बाद में 1000 पेज लंबा है, लेकिन उपयोगी विवरण से भरा है।
मैं जिस मानदंड का उपयोग करूंगा, वह यह होगा कि थ्रेड से कुछ होने के लिए "प्रतीक्षा" करने का कोई महत्वपूर्ण समय बिताने की उम्मीद है या कुछ विशेष कार्यवाही करता है जिसके लिए कोई अन्य थ्रेड इंतजार कर रहा है। – supercat
- 1. asp.net थ्रेडपूल - लंबे समय तक चलने वाला ऑपरेशन
- 2. यदि आप लंबे समय तक चलने वाली क्वेरी को मार देते हैं तो क्या होता है?
- 3. लंबे समय तक चलने वाली बातचीत में विकेट और हाइबरनेट के बीच सुरक्षित रूप से जानकारी
- 4. sqlalchemy: एक लंबे समय से चलने वाली क्वेरी को रोकना
- 5. लंबे समय तक चलने वाली रिपोर्टों को संभालना
- 6. एएसपीनेट के तहत अतुल्यकालिक रूप से लंबे समय तक चलने वाली प्रक्रिया को कैसे चलाएं?
- 7. जानबूझकर एक लंबे समय से चलने वाली MySQL क्वेरी
- 8. कभी भी लंबे समय तक चलने वाली प्रक्रिया के लिए RabbitMQ और Node.js का उपयोग करें?
- 9. अंतर्निहित एनीमेशन लंबे समय से चलने वाली धीमी एनिमेशन के लिए उपयुक्त है?
- 10. टीपीएल समांतर। लंबे समय तक चलने वाले कार्यों के साथ
- 11. क्या यह सच है कि मुझे संपत्ति एक्सेसर में "लंबी दौड़" नहीं करना चाहिए?
- 12. लंबे समय तक चलने वाली प्रक्रिया के दौरान लॉकिंग से pygtk GUI रोकें
- 13. लंबे समय तक चलने वाले पायथन धागे को समाप्त करें
- 14. लंबी चल रही प्रक्रियाओं के लिए थ्रेडपूल बनाम स्वयं के थ्रेड
- 15. लंबे समय से चलने वाली साइडकीक नौकरियां मरती रहती हैं
- 16. लंबे समय तक चलने वाली परियोजना पर रेल माइग्रेशन को समेकित करना
- 17. डीजेगो सेलेरी: लंबे समय तक चलने वाली प्रक्रिया का केवल एक उदाहरण निष्पादित करें
- 18. लंबे समय से चलने वाले यूनिट परीक्षण
- 19. लंबे समय तक चलने वाले यूनिट टेस्ट से कैसे निपटें?
- 20. लंबे समय से चलने वाली कार्रवाई के लिए स्ट्रीमिंग टेक्स्ट आउटपुट?
- 21. यह सुनिश्चित करना कि यूपी थ्रेड पर चलने वाली चीजें WPF
- 22. एक लंबे समय तक चलने वाली फेसबुक एक्सेस टोकन कैसे प्राप्त करें?
- 23. क्या 'ऑब्जेक्ट कॉन्टेक्स्ट' के बजाय 'डीबीकॉन्टेक्स्ट' का उपयोग करना हमेशा बेहतर होता है?
- 24. लंबे समय तक चलने वाले कार्यों को कैसे निष्पादित करें?
- 25. SQLite लंबे प्रारूपों के लिए लंबे समय तक?
- 26. लंबे समय तक चलने वाले कार्यों पर विनफॉर्म अपडेट
- 27. सबसे लंबे समय तक चलने वाले यूनिट परीक्षण?
- 28. सेट अंतराल और लंबे समय तक चलने वाले फ़ंक्शन
- 29. क्या फ़ायरफ़ॉक्स कम से कम (लंबे समय तक चलने) जावास्क्रिप्ट को रोकना बंद कर देता है?
- 30. लंबे समय तक पहुंचने वाली टोकन सर्वर पक्ष
इस प्रश्न की समीक्षा करें: http://stackoverflow.com/questions/230003/thread-vs-threadpool –