2009-01-15 13 views
6

के लिए नमूना समस्याएं मैं एक कठिन समस्या के रूप में जो देखता हूं उससे निपटने वाला हूं, मुझे लगता है। मुझे उत्पादकों और उपभोक्ताओं की एक पाइपलाइन बहु-थ्रेड की आवश्यकता है।मल्टीथ्रेडिंग प्रैक्टिस

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

आप किस पुस्तक या संदर्भ की सिफारिश करेंगे कि समरूपता पर ध्यान केंद्रित करें और गहन समस्याओं और मामलों को दें?

(मैं उस समस्या पर ध्यान केंद्रित नहीं करना चाहता हूं जिसे मैं हल करना चाहता हूं। मैं सिर्फ अच्छे संदर्भ और नमूना समस्याओं के लिए पूछना चाहता हूं। यह अन्य उपयोगकर्ताओं के लिए अधिक उपयोगी होगा। मैं समस्या पर अटक गया ।)

+0

क्या आप जो कुछ करने की कोशिश कर रहे हैं उस पर आप थोड़ा और स्पष्ट हो सकते हैं? और किताबों में आप जो उदाहरण देखते हैं वह फिट नहीं होते? – Guillaume

+0

एक समस्या उदाहरण या एक किताब? यदि आपको पुस्तक की आवश्यकता है, तो इसे शीर्षक में कहें। – chakrit

+0

@guillaume - पुस्तक उदाहरण बहुत सरल हैं (हम अभी भी पहले कुछ अध्यायों में हैं), या तो कुछ स्ट्रिंग आउटपुट या कुछ int लिख/लिखें। मुझे लगता है कि मैं क्या कहना चाहता हूं कि मैं असली दुनिया के केस स्टडीज देखना चाहता हूं। – moogs

उत्तर

2

आप निवेश करने के लिए मैं किताब की सिफारिश करेंगे के लिए पर्याप्त समय है, तो "कन्करेंसी: राज्य मॉडल & जावा कार्यक्रम, 2 संस्करण" जेफ मैगी और जेफ क्रेमर, जॉन विले द्वारा & संस 2006

आप जावा हिस्सा अनदेखा कर सकते हैं यदि आप किसी अन्य भाषा का उपयोग कर रहे हैं

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

इस मॉडल को अपनी भाषा संरचनाओं में अनुवाद करना तब प्रोग्रामिंग तकनीक और कुछ डिज़ाइन पैटर्न का प्रश्न है।

2

पाठकों-लेखकों, उत्पादकों-उपभोक्ताओं या डाइनिंग दार्शनिकों की तरह अधिकांश पाठ्य पुस्तक की समस्याएं म्यूटेक्स के सभी चित्र हैं। मैं एक प्रोटोटाइप मॉडल करना पसंद करूंगा जो एक बड़ी अनुमान है और बड़ी समस्या है।

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

1

मुझे यकीन नहीं है कि आप क्या देख रहे हैं। लेकिन असली दुनिया की एंटरप्राइज़ स्थिति में, हम आम तौर पर उत्पादकों उपभोक्ता सामान करते समय किसी प्रकार के मैसेजिंग फ्रेमवर्क का उपयोग करते हैं। स्पा में जावा में, यह JMS है। और आप साथ में सहायता के लिए उत्कृष्ट Spring Framework का उपयोग कर सकते हैं।

0

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

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

(ध्यान दें कि "परिपत्र बफर" एक काफी सी-केंद्रित शब्द है, जो स्मृति के एक ब्लॉक के अपेक्षाकृत प्रत्यक्ष हेरफेर में निहित है। पायथन की कतार कक्षा एक समान आधारभूत सिद्धांत को एक सूची-केंद्रित तरीके से लागू करती है, और मुझे यकीन है कि कई अन्य भाषाओं में कुछ अलग-अलग नामों के तहत अवधारणात्मक समान संरचनाएं हैं ...)

1

यदि आप जावा के साथ बिल्कुल काम कर रहे हैं (और संभवतः यदि आप नहीं हैं), तो आपको निश्चित रूप से Java Concurrency In Practice पढ़ना चाहिए।

2

आपके अनुरोध को पूरी तरह से अनदेखा करते हुए, मैं सुझाव दूंगा कि आपको उत्पादकों और उपभोक्ताओं की बहु-थ्रेडेड पाइपलाइन स्थापित करने के बारे में सोचने के तरीके के रूप में SEDA (चरणबद्ध घटना संचालित आर्किटेक्चर) देखना चाहिए।

+0

एक वैकल्पिक अंतर्दृष्टि स्वागत से अधिक है (शायद स्टैक ओवरफ्लो के लिए नहीं, लेकिन मेरे लिए ++। अपवोट) – moogs

3

The little book of semaphores एक अच्छी मुफ्त पुस्तक है। लेखक पहले एक समस्या पूछने का एक अनूठा दृष्टिकोण लेता है और फिर जवाब देने से पहले संकेत प्रस्तुत करता है। कठिनाई स्तर में समस्याएं धीरे-धीरे बढ़ती हैं, और पुस्तक विशेष रूप से किसी भी भाषा के लिए नहीं लिखी जाती है लेकिन सामान्य मल्टीथ्रेडिंग अवधारणाओं को कवर करती है।

+0

टूटा हुआ लिंक –

+0

लिंक टूटा नहीं गया था यह इंगित कर रहा था सीधे पीडीएफ पुस्तक में जो आपको लिंक के इंप्रेशन को लोड नहीं किया जा सकता है। वैसे भी मैंने लिंक बदल दिया है ताकि अब पुस्तक के बारे में HTML पृष्ठ लोड हो, न कि पीडीएफ पुस्तक स्वयं। – Raminder

संबंधित मुद्दे