কম্পিউটার

রুবিতে সারিগুলি কীভাবে ব্যবহার করবেন

একটি সারি একটি অপেক্ষা তালিকার মত।

কল্পনা করুন যে আপনি অ্যাপলের সর্বশেষ পণ্য কেনার জন্য, সিনেমার টিকিট পেতে বা আপনার মুদির জন্য অর্থ প্রদানের জন্য লাইনে অপেক্ষা করছেন।

এগুলি সারি!

আপনি আপনার রুবি প্রকল্পগুলিতে সারি ব্যবহার করতে পারেন।

কিভাবে?

সারিগুলি আপনাকে আগমনের ক্রমে জিনিসগুলি প্রক্রিয়া করার অনুমতি দেয়, তাই তারা যেকোন কিছুর জন্য সহায়ক হতে পারে যেগুলির জন্য তারা যতক্ষণ অপেক্ষা করছে ততদিন অগ্রাধিকার দেওয়া প্রয়োজন৷

আপনি এটি প্রয়োগ করতে পারেন৷ :

  • একটি বাস্তব-বিশ্বের সারি মডেল করুন
  • ব্রেডথ-ফার্স্ট সার্চ (BFS) এর মত অ্যালগরিদম প্রয়োগ করুন
  • সিপিইউ, ডিস্ক, প্রিন্টার ইত্যাদির মতো শেয়ার্ড রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করুন।

এখন…

আসুন কিছু কোড দেখি!

রুবিতে একটি সারি কীভাবে প্রয়োগ করবেন

একটি অ্যারে একটি 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. একটি ম্যাট্রিক্স কি এবং রুবিতে এটি কীভাবে ব্যবহার করবেন?

  3. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  4. রুবিতে স্ট্রাকট এবং ওপেনস্ট্রাক্ট কীভাবে ব্যবহার করবেন