我正在尝试多线程示例。我正在尝试使用以下代码产生竞争条件。但我总是得到相同(正确)的输出。
class Counter
attr_reader :count
def initialize
@count = 0
end
def increment
@count += 1
end
def decrement
@count -= 1
end
end
c = Counter.new
t1 = Thread.start { 100_0000.times { c.increment } }
t2 = Thread.start { 100_0000.times { c.increment } }
t1.join
t2.join
p c.count #200_0000
我能够在每个线程中使用更少的迭代次数来观察 Java 中的竞争条件。是我运行它的次数不足以产生竞争条件,还是+
/-
在 Ruby 中线程是安全的?我正在使用红宝石 2.0.0p247