kfb*_*kfb 6 ruby distributed drb ruby-1.9 ruby-1.8
我有一个启动DRb服务的脚本,然后生成一个处理程序对象并等待通过DRb.thread.join.我想脚本运行直到明确杀死,所以我补充说
trap "INT" do
DRb.stop_service
end
Run Code Online (Sandbox Code Playgroud)
它成功地停止了DRb服务并在Ruby 1.8下退出,但在1.9下似乎死锁(在OS X 10.6.7上).采样过程显示出几条线程在旋转semaphore_wait_signal_trap.
我假设我在打电话的方式做错了stop_service,但我不确定是什么.任何人都可以给我任何指示如何正确地去做它?
好的,我想我找到了解决方案.如果我用原始代码替换
begin
DRb.thread.join
rescue Interrupt
ensure
DRb.stop_service
end
Run Code Online (Sandbox Code Playgroud)
Ctrl-C可以工作并停止服务.