Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी में कतारों का उपयोग कैसे करें

एक कतार प्रतीक्षा सूची की तरह होती है।

कल्पना कीजिए कि आप नवीनतम Apple उत्पाद खरीदने, मूवी टिकट प्राप्त करने या अपने किराने के सामान का भुगतान करने के लिए कतार में प्रतीक्षा कर रहे हैं।

ये कतारें हैं!

आप अपने रूबी प्रोजेक्ट्स में क्यू का उपयोग कर सकते हैं।

कैसे?

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

आप इसे इस पर लागू कर सकते हैं :

  • वास्तविक दुनिया की कतार का मॉडल बनाएं
  • ब्रेडथ-फर्स्ट सर्च (बीएफएस) जैसे एल्गोरिदम लागू करें
  • साझा संसाधन, जैसे CPU, डिस्क, प्रिंटर, आदि तक पहुंच को नियंत्रित करें।

अब...

आइए कुछ कोड देखें!

रूबी में एक कतार कैसे लागू करें

एक सरणी Queue की तरह व्यवहार कर सकती है अगर आप सही तरीकों का इस्तेमाल करते हैं।

ये विधियां हैं :

  • unshift (या prepend रूबी 2.5+ के साथ)
  • pop

जब आप unshift करते हैं , आप क्यू में एक आइटम जोड़ रहे हैं।

उदाहरण :

queue = []

queue.unshift "apple"
queue.unshift "orange"
queue.unshift "banana"

# ["banana", "orange", "apple"]

जब आप pop , आप अंतिम आइटम को कतार से हटाते हैं।

यह अगला आइटम है जिसे संसाधित किया जाना चाहिए।

उदाहरण :

queue.pop
# "apple"

queue.pop
# "orange"

आप इस आइटम को हटाए बिना "अगला कौन है" देखने के लिए अंतिम आइटम देख सकते हैं।

उदाहरण :

queue[-1]

# "banana"

इस ऑपरेशन को peek . कहा जाता है ।

रूबी समवर्ती कतार

रूबी के पास उचित थ्रेड-सुरक्षित, अवरुद्ध, Queue है कक्षा।

आप इस कतार का उपयोग बहु-थ्रेडेड प्रोग्राम में कार्य के समन्वय के लिए कर सकते हैं।

उदाहरण :

que = Queue.new

que << 1
que << 2
que << 3

आप pop . के साथ इस कतार से एक आइटम प्राप्त कर सकते हैं :

que.pop
# 1

que.pop
# 2

यदि कतार खाली है, तो pop पर कॉल करें आपके वर्तमान थ्रेड को सुप्त अवस्था में रखेगा और क्यू में कुछ जोड़े जाने तक प्रतीक्षा करें

"अवरुद्ध" करने का यही अर्थ है।

आप true . पास करके ब्लॉक करने से बच सकते हैं pop . के लिए :

que.pop(true)

यह एक ThreadError: queue empty उठाएगा अपवाद जब कतार खाली हो।

एक आकार की कतार का उपयोग कैसे करें

एक आकार की कतार एक नियमित कतार के समान होती है लेकिन एक आकार सीमा के साथ होती है।

उदाहरण :

que = SizedQueue.new(5)

जब कतार भर जाती है, तो push (<< के समान ही ) ऑपरेशन वर्तमान थ्रेड को तब तक निलंबित कर देगा जब तक कि कोई आइटम कतार से बाहर नहीं हो जाता।

उदाहरण :

que.push(:bacon)

आप इसके बजाय true . पास करके एक अपवाद उठाना चुन सकते हैं एक तर्क के रूप में:

que.push(:bacon, true)

यह ThreadError: queue full बढ़ाता है ।

वीडियो ट्यूटोरियल

सारांश

आपने रूबी कतारों के बारे में सीखा है!

जब आपको FIFO (फर्स्ट-इन-फर्स्ट-आउट) क्रम में कार्य संसाधित करने की आवश्यकता हो, तो आप एक क्यू का उपयोग कर सकते हैं . कतार लागू करने . के दो तरीके हैं , किसी सरणी का उपयोग करके, या Queue . का उपयोग करके कक्षा।

पढ़ने के लिए धन्यवाद।


  1. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

    मैट्रिक्स एक 2डी (2-आयामी) सरणी है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। उनका उपयोग इसके लिए किया जा सकता है : टेबल गेम (शतरंज, चेकर्स, आदि) में बोर्ड का प्रतिनिधित्व करना सांख्यिकी और डेटा विश्लेषण प्लॉट और ग्राफ़ बनाना चूंकि यह एक शक्तिशाली डेटा संरचना ह

  1. रूबी उपनाम कीवर्ड का उपयोग कैसे करें

    आप रूबी पद्धति को दो तरह से वैकल्पिक नाम दे सकते हैं: उपनाम (कीवर्ड) उपनाम_विधि क्योंकि वे एक ही काम को थोड़े अलग तरीके से करते हैं, यह एक भ्रमित करने वाला विषय हो सकता है। यह छवि मतभेदों का सारांश है : आइए एक ठोस समझ पाने के लिए इन अंतरों को और अधिक विस्तार से देखें! उपनाम कीवर्ड सबसे पहले

  1. रूबी में स्ट्रक्चर और ओपनस्ट्रक्चर का उपयोग कैसे करें?

    रूबी में स्ट्रक्चर क्या है? एक संरचना एक अंतर्निहित रूबी वर्ग है, इसका उपयोग नए वर्ग बनाने के लिए किया जाता है जो मूल्य वस्तुओं का उत्पादन करते हैं। संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए एक मूल्य वस्तु का उपयोग किया जाता है। यहां एक उदाहरण दिया गया है : एक Point दो निर्देशांकों के साथ