📜  红宝石 |队列 new()函数(1)

📅  最后修改于: 2023-12-03 15:27:32.254000             🧑  作者: Mango

Ruby队列及new()函数介绍

简介

队列是一种常用的数据结构,它采用先进先出(First In First Out,FIFO)的原则,即最先进队列的元素最先被删除。在Ruby语言中,队列被实现为Queue类。

创建队列

在Ruby中,创建一个队列非常简单,只需要调用Queue.new()函数即可创建一个新的队列。

queue = Queue.new()
队列方法
push(object)

向队列的末尾添加一个元素。该方法返回self,所以可以进行链式调用。

queue.push(1).push(2).push(3)
pop()

移除队列首元素并返回其值。如果队列为空,该方法会阻塞程序并等待新元素加入。

queue.pop()
<<(object)

可以使用<<操作符同时添加多个元素

queue << 1 << 2 << 3
length()

返回队列中元素的个数

queue.length()
clear()

清空队列中的所有元素

queue.clear()
实例

以下为一个简单的实例,它使用队列实现了一个简单的生产者-消费者模型。

queue = Queue.new()

# 生产者线程
producer = Thread.new do
  10.times do |i|
    sleep(rand(i)) # 模拟生产耗时
    item = "Product #{i}"
    puts "Produced #{item}"
    queue.push(item)
  end
end

# 消费者线程
consumer = Thread.new do
  loop do
    sleep(rand(5)) # 模拟消费耗时
    item = queue.pop()
    puts "Consumed #{item}"
  end
end

# 等待两个线程执行完毕
producer.join()
consumer.join()

在这个实例中,生产者线程往队列中添加元素,消费者线程从队列中取出元素并进行消费。由于队列采用先进先出的原则,保证了消费者取出来的元素与生产者添加的元素顺序一致。