所以有一篇关于 Thread#raise、Thread#kill 和扩展超时 (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 的现代实现是否安全?如果是这样,是否有文件/ promise 来证明/证明它?
最佳答案
不,它们仍然不安全(至少在 ruby 中)。 https://github.com/ruby/ruby/blob/trunk/lib/timeout.rb是最新的代码,您可以看到它仍然在其中执行 x.raise exception
。这可能会做坏事,比如如果你有嵌套的超时,它们可能会相互冲突 [yikes]。 FWIW。
关于ruby - Thread#raise 在 MRI Ruby 1.9/2.0 中安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234028/