在生成处理程序对象并通过DRb.thread.join
等待之前,我有一个启动DRb服务的脚本。我希望脚本能够运行到被明确杀死为止,因此我添加了
trap "INT" do
DRb.stop_service
end
它成功停止了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
Ctrl-C起作用并停止该服务。
关于ruby - 停止分布式Ruby服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5460799/