Ruby有原子变量吗?

Ruby有原子变量吗?,ruby,Ruby,Ruby是否有原子变量,比如Java中的AtomicInteger或AtomicBoolean?我认为Ruby没有原子变量。但是,您可以使用一个类来模拟它。不是本机的,但是您可以使用该类获得一些原子性 您可能可以实现自己的原子字符串,例如,使用互斥锁,该互斥锁可能提供您需要的(已找到)。(正如其他人所建议的,它基本上是一个互斥体),如果您想编写自己的互斥体包装器,它应该为您提供一个良好的起点 稍加修改的示例来自: 应该注意的是,根据互斥体实现原子类型违背了使用“原子”抽象的目的 正确的原子实现会

Ruby是否有原子变量,比如Java中的
AtomicInteger
AtomicBoolean

我认为Ruby没有原子变量。但是,您可以使用一个类来模拟它。

不是本机的,但是您可以使用该类获得一些原子性

您可能可以实现自己的
原子字符串
,例如,使用
互斥锁

,该互斥锁可能提供您需要的(已找到)。(正如其他人所建议的,它基本上是一个互斥体),如果您想编写自己的互斥体包装器,它应该为您提供一个良好的起点

稍加修改的示例来自:


应该注意的是,根据互斥体实现原子类型违背了使用“原子”抽象的目的


正确的原子实现会发出利用CPU比较和交换指令的代码。

按照建议使用互斥,如下所示:

i = 0
lock = Mutex.new

# Then whenever you want to modify it:
lock.synchronize do
  i += 1
end
i = 0
lock = Mutex.new

# Then whenever you want to modify it:
lock.synchronize do
  i += 1
end