(J)Ruby - 正在杀死一个线程好吗?

时间:2011-03-07 14:11:08

标签: ruby multithreading jruby

在Java中,停止线程是不可行的。所以,我想知道这个(Thread.exit)在Ruby中是否可行?

(FWIW,我正在使用Ruby的JRuby风格)

2 个答案:

答案 0 :(得分:2)

通常,强制停止查杀线程总是禁忌的,因为您无法保证资源的清理释放和该线程持有的锁定。所以Nick是对的,一个变量表明线程关闭本身的时间通常更好。

但是,对于你的情况,除了强行杀死线程之外别无选择。最安全的路径是线程#在线程中引发一些东西以允许正常的异常处理并确保块清理资源。但当然可以由用户拯救。但是,JRuby 也运行ensure块以响应无法控制的Thread#kill。在任何一种情况下,您都无法保证不会中断正在进行的确保阻止,但对于您的情况,这可能是可接受的风险。

答案 1 :(得分:0)

我对Ruby一无所知 - 但我仍然认为有一个变量或标志来指示你希望线程何时结束可能更安全。然后,您可以安全地完成对内存的写入并关闭可能已打开的资源。

<磷>氮