线程#在MRI Ruby 1.9 / 2.0中是否安全?

时间:2013-10-07 20:23:00

标签: ruby multithreading

所以有一篇关于Thread#raise,Thread#kill和扩展Timeout(http://headius.blogspot.com/2008/02/rubys-threadraise-threadkill-timeoutrb.html)不安全的老博文。由于大致相同的原因(http://docs.oracle.com/javase/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html),Java很久以前就弃用了它的等效方法。

博客文章非常陈旧。 Thread.raise的现代实现是否安全?如果是这样,是否有文件/提交来证明/证明它?

1 个答案:

答案 0 :(得分:3)

不,他们仍然不安全(至少在红宝石中)。 https://github.com/ruby/ruby/blob/trunk/lib/timeout.rb是最新的代码,您可以看到它仍然在那里x.raise exception。这可以做坏事,比如你有嵌套超时,它们可能会相互冲突[yikes]。 FWIW。