ruby - Thread#raise 在 MRI Ruby 1.9/2.0 中安全吗?

标签 ruby multithreading

所以有一篇关于 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/

相关文章:

ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载

java - 在 Java 中使用 Executor 编写文件

c - Linux内核线程: How to pass the Linux module write function as the function that the thread has to execute?

multithreading - 如何避免不在 FX 应用程序线程上; currentThread = JavaFX 应用程序线程错误?

java - 我有很多分析调用要发送,如果缓冲区未满,如何缓冲它们并在一定时间内刷新

ruby - Rails 3.2 中的 DRY Controller

ruby-on-rails - Ruby on Rails 堆栈级别太深

避免使用 Thread.sleep 的 Java 贪吃蛇游戏

c++ - 功能覆盖在哪里完成?

ruby - 如何四舍五入到小数点后两位?