我有一个启动 DRb 服务的脚本,然后生成处理程序对象并通过 DRb.thread.join
等待。我希望脚本一直运行直到被明确杀死,所以我添加了
trap "INT" do
DRb.stop_service
end
在 Ruby 1.8 下成功停止 DRb 服务并退出,但在 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/