我有一组Ruby守护进程,在启动时,在运行守护进程的表中写入信息。守护进程永远运行或直到它们收到信号。信号处理程序删除数据库中守护程序的记录。在Ruby 2.0之前,它运行良好。从2.0开始,我收到错误lock': can't be called from trap context (ThreadError)
。 Investigation表示Ruby不允许在信号处理程序中使用此(并记录),因为它可能会引入种族和死锁条件。很公平。但似乎我正在寻找的是合理的。那么这样做的正确方法是什么?设置标志和民意调查看起来真的很难看。当然有更好的方法。