相关疑难解决方法(0)

单例类是否会在多线程应用程序中产生问题?

这可能是过早的优化,或过早的过度警告,但我避免在几个类上使用单例,因为我担心我需要将我的应用程序作为多线程运行,并且单身人士会制造冲突和混乱.单例在Ruby中有这个问题,还是有某种内置的命名空间,这样当一个类引用单例时,只返回同一个线程上的单例?

编辑:澄清这些是可观察的类,当更新时会导致正在观看它们的其他类更新.我不确定这是否是线程安全的,但我知道现在我正在通过这些可观察的类大约一吨,这有点烦人.他们看起来像天生的单身人士课程.

ruby

8
推荐指数
2
解决办法
4326
查看次数

用MRI产生竞争条件

我想知道使用MRI ruby​​(2.0.0)和一些全局变量来制作竞争条件是否容易,但事实证明它并不那么容易.看起来它应该在某些时候失败,但它没有,我已经运行了10分钟.这是我一直试图实现的代码:

def inc(*)
  a  = $x
  a +=  1
  a *= 3000
  a /= 3000
  $x =  a
end

THREADS = 10
COUNT   = 5000

loop do
  $x = 1
  THREADS.times.map do Thread.new { COUNT.times(&method(:inc)) } end.each(&:join)

  break puts "woo hoo!" if $x != THREADS * COUNT + 1
end

puts $x
Run Code Online (Sandbox Code Playgroud)

为什么我无法生成(或检测)预期的竞争条件,并woo hoo!在Ruby MRI 2.0.0中获得输出?

ruby multithreading race-condition

6
推荐指数
1
解决办法
249
查看次数

Ruby Enterprise是否使用绿色线程?

我想知道这个,除了这个之外找不到任何东西

"线程调度程序错误修复和性能改进.在Ruby Enterprise Edition上的线程可以比官方Ruby 1.8快10倍"

ruby multithreading

3
推荐指数
2
解决办法
407
查看次数

标签 统计

ruby ×3

multithreading ×2

race-condition ×1