我有一个启动 DRb 服务的脚本,然后生成一个处理程序对象并通过DRb.thread.join
. 我希望脚本一直运行到被明确杀死,所以我添加了
trap "INT" do
DRb.stop_service
end
它成功停止了 DRb 服务并在 Ruby 1.8 下退出,但在 1.9 下似乎死锁(在 OS X 10.6.7 上)。对该过程进行采样显示有几个线程正在旋转semaphore_wait_signal_trap
。
我认为我打电话的方式有问题stop_service
,但我不确定是什么。谁能给我任何关于如何正确进行的指示?