在Ruby线程中多小时睡眠的性能影响是什么?

时间:2016-06-14 00:57:08

标签: ruby multithreading sleep

我有一个启动和管理工作线程的类。线程看起来像这样:

DELAY = 6 * 60 * 60 # Sleep 6 hours by default

Thread.new do
  do_some_work()

  sleep(DELAY)
end

do_some_work资源不是很大,平均需要5秒钟才能完成;但它不应该阻止,如果我经常调用它,就有可能出现限制错误。

我不确定在Ruby线程中多小时睡眠的含义是什么。我是否应该使用此代码预期会有严重的性能损失?值得注意的是,我不能使用cron作业来完成这项任务。

1 个答案:

答案 0 :(得分:2)

Ruby解释器将在您的系统上使用内存,只要它正在运行。因此,如果您要保持整个Ruby解释器进程正在运行,以便此线程可以每6小时唤醒并执行其操作,那可能会很糟糕。您可以使用操作系统的系统监视工具来查看该过程需要多少内存。

除此之外,让一个线程睡了好几个小时应该没问题。