gpt4 book ai didi

ruby - 如何检测 Ruby 线程何时从线程内被杀死

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:21 25 4
gpt4 key购买 nike

如果我使用以下代码启动了一个线程,我如何从线程本身内部捕获/检测退出调用,以便我可以在它终止之前进行一些清理?

thr = Thread.new { sleep }
thr.status # => "sleep"
thr.exit
thr.status # => false

我在想也许会像下面这样,但我不确定。

thr = Thread.new {
begin
sleep
rescue StandardError => ex
puts ex.message
rescue SystemExit, Interrupt
puts 'quit'
ensure
puts 'quit'
end
}
thr.status # => "sleep"
thr.exit #=> "quit"
thr.status # => false

最佳答案

这是未经测试的,但 Thread 就像一切都可以通过在 GC 激活之前跳入来专门化。所以我认为您可以添加一个 ObjectSpace 终结器方法,该方法在线程被垃圾回收之前执行,以执行您想要的操作。

Ruby: Destructors?

关于ruby - 如何检测 Ruby 线程何时从线程内被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com