मैं आपको एक समानता दूंगा।
सड़क विक्रेताओं पर एक कतार की कल्पना करें जहां लोग लाइन के अंत में शामिल होते हैं और सामने से सेवा प्राप्त करते हैं। जैसे-जैसे प्रत्येक व्यक्ति की सेवा की जाती है, कतार में शेष लोग आगे बढ़ते हैं (आम तौर पर इसे लेने में कितना समय लगता है), और अंत में नए लोग शामिल हो जाते हैं। इस उदाहरण में लोगों को लाइन में शामिल होने में सक्षम बनाने के लिए आगे बढ़ना होगा, अन्यथा कतार का अंत हमेशा विक्रेता से आगे निकल जाएगा। तो इस उदाहरण में सर्वर कतार के सामने रहता है और जो भी आगे या किसी के साथ सौदा करता है।
अब कल्पना करें कि क्या लोग नहीं चले गए थे, लेकिन कतार के सिर की सेवा करने के बाद विक्रेता स्वयं कतार के साथ आगे बढ़े, असल में जहां कतार का सिर है। आखिरकार 100 लोगों की सेवा करने के बाद सर्वर सड़क के नीचे आधा रास्ते है और 500 के बाद सर्वर अगली सड़क आदि में है ... यह कहां रुकता है?
तो सुविधा के लिए विक्रेता एक बड़े सर्किट क्षेत्र को मानचित्र करता है जहां लोग हमेशा कतार के अंत में शामिल हो सकते हैं और वह हमेशा अगले व्यक्ति के पास जाता है, लेकिन कतार एक ही स्थान पर बनी हुई है। वह सिर्फ कतार में लोगों की सेवा करता है। निश्चित रूप से वह केवल कतार में लोगों की सेवा कर सकता है, लेकिन बशर्ते वह इतना बड़ा कर सके तो वह मांग के साथ रह सकता है, और उसे अपने निर्दिष्ट बिक्री क्षेत्र से दूर जाने की जरूरत नहीं है।
इस समरूपता को कंप्यूटर पर वापस लेना ... में पहले उदाहरण के लिए एक कतार प्रबंधक है और आइटमों की सेवा के रूप में यह बफर के साथ आइटम को घुमाता है। दूसरा उदाहरण में प्रोग्राम तब तक चलता है जब तक सरणी = इसके निश्चित आकार (या तो परिभाषित या स्थान द्वारा सीमित) में जोड़ने के लिए कोई और स्मृति नहीं होती है।तीसरे उदाहरण में सर्वर दूसरे की तरह कतार के सिर पर चला जाता है लेकिन सरणी तय होती है और केवल इतनी सारी चीज़ें कतार में शामिल हो सकती हैं, लेकिन उन्हें अभी भी सर्विस फीफो मिल जाएगी।
टीएल; डॉ: संसाधनों का कुशल प्रबंधन।
स्रोत
2012-10-05 23:24:35
मुझे लगता है कि असीमित स्लॉट के साथ भी आपके पास गोलाकार तरीके से उन लोगों का पुन: उपयोग करना उपयोगी है। –
असीमित परिदृश्य में, मैं 'get() 'पर स्मृति को मुक्त कर दूंगा और' add()' पर नई मेमोरी को आवंटित करूंगा। तो मैं स्लॉट का पुन: उपयोग करता हूं लेकिन मैं एक निश्चित आदेश नहीं। – Simulant
मुझे लगता है कि सिमुलेंट एक क्यूई का जिक्र कर रहा है जो एक लिंक्डलिस्ट जैसे गतिशील डेटा संरचना द्वारा समर्थित है। उन मामलों में, "स्लॉट्स का पुन: उपयोग" करने का कोई मतलब नहीं है क्योंकि वहां कोई स्लॉट नहीं है, केवल "धारक लिंक" जिन्हें सस्ती रूप से बनाया और त्याग दिया जा सकता है। असल में, आम तौर पर, सस्ती रूप से निर्मित वस्तुओं का पुन: उपयोग करने की कोशिश करने से ऑब्जेक्ट्स को ढेर स्पेस के वर्गीकरण में स्थानांतरित करने की अनुमति देकर प्रदर्शन समस्याएं हो सकती हैं, जहां वे संबंधित नहीं हैं। –