2010-02-16 54 views
4

我想在Ruby中运行一个任务达到(比如说)10秒,如果这个任务花费了更长的时间,那么就终止这个任务。这是为了防止挂起一个外部过程。实现这个的最好方法是什么?特别是,如何编写下面的函数for_up_to_10_seconds红宝石中的时间限制计算

loop do 
    for_up_to_10_seconds do 
    # something 
    end 
end 

回答

7

从标准库超时类是你在找什么:http://www.ruby-doc.org/core/classes/Timeout.html

loop do 
    Timeout.timeout(10) do 
    # something 
    end 
end 
+0

我记得听到超时并不完全可靠,但我没有来源,以支持这一行动。 – Trevoke 2010-02-16 17:54:01

+0

我只使用线程一点,但我怀疑超时并不能解救你的死锁。 – 2010-02-16 22:00:27