如果我使用以下代码启动了一个线程,如何从线程本身中捕获/检测退出调用,以便在终止之前进行一些清理?
thr = Thread.new { sleep }
thr.status # => "sleep"
thr.exit
thr.status # => false
Run Code Online (Sandbox Code Playgroud)
我在想,也许它会像下面这样,但我不确定.
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
Run Code Online (Sandbox Code Playgroud) 我正在使用git2-rs在Rust应用程序中实现一些标准的git功能.我一直在阅读git内部,并了解在高级别"git pull"是一个"git fetch",然后是"git merge",但我仍然无法理解如何使它与git2-rs一起工作.有对一个问题的讨论在这里在那里的同意,GIT2-RS"混帐拉"的例子将是很好的,但一个是从未创建.有一个在该讨论中进行硬重置的示例,但我想避免覆盖本地更改(因此合并).我一直无法在使用git2-rs的任何其他代码库中找到示例.
该"混帐复位"的例子在这里展示了如何获得一个OID后,取指,我认为,但合并功能需要一个AnnotatedCommit,我不知道如何在两者之间转换,或者即使是走在正确的方向.