温馨提示×

Ruby单例模式怎样保证数据一致性

小樊
82
2024-11-01 21:18:04
栏目: 编程语言

在Ruby中,单例模式可以通过使用类变量和类方法来确保数据一致性。以下是一个简单的Ruby单例模式实现,展示了如何保证数据一致性:

class Singleton
  @@instance = nil

  def self.instance
    return @@instance if @@instance

    # 使用锁来确保只有一个线程可以创建实例
    lock = Mutex.new
    lock.synchronize do
      return @@instance if @@instance

      # 创建实例并存储在类变量中
      @@instance = new
    end
  end

  def initialize
    @data = {}
  end

  def add_data(key, value)
    @data[key] = value
  end

  def get_data(key)
    @data[key]
  end
end

在这个例子中,我们使用了一个类变量@@instance来存储唯一的实例。instance方法首先检查@@instance是否已经存在,如果存在则直接返回。如果不存在,我们使用Mutex来确保在同一时间只有一个线程可以创建实例。这样可以避免多个线程同时创建实例,从而保证数据一致性。

在实例创建后,我们可以使用add_dataget_data方法来添加和获取数据。由于单例模式只允许创建一个实例,因此这些方法在所有线程之间共享,从而保证了数据一致性。

0