相关疑难解决方法(0)

为什么Ruby中没有竞争条件

我正在尝试多线程示例.我正在尝试使用以下代码生成竞争条件.但我总是得到相同(正确)的输出.

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
Run Code Online (Sandbox Code Playgroud)

我能够在每个线程中使用少得多的迭代次数来观察Java中的竞争条件.是不是我没有足够多次运行它来产生竞争条件,或者+/ -是Ruby中的线程安全?我使用的是ruby 2.0.0p247

ruby multithreading

12
推荐指数
1
解决办法
1927
查看次数

标签 统计

multithreading ×1

ruby ×1