我有一个启动和管理工作线程的类。线程看起来像这样:
DELAY = 6 * 60 * 60 # Sleep 6 hours by default
Thread.new do
do_some_work()
sleep(DELAY)
end
do_some_work
资源不是很大,平均需要5秒钟才能完成;但它不应该阻止,如果我经常调用它,就有可能出现限制错误。
我不确定在Ruby线程中多小时睡眠的含义是什么。我是否应该使用此代码预期会有严重的性能损失?值得注意的是,我不能使用cron作业来完成这项任务。
答案 0 :(得分:2)
Ruby解释器将在您的系统上使用内存,只要它正在运行。因此,如果您要保持整个Ruby解释器进程正在运行,以便此线程可以每6小时唤醒并执行其操作,那可能会很糟糕。您可以使用操作系统的系统监视工具来查看该过程需要多少内存。
除此之外,让一个线程睡了好几个小时应该没问题。