2016-06-14 41 views
2

我有一個類,啓動和管理工作線程。線程看起來是這樣的:在Ruby線程中多睡幾個小時會有什麼性能影響?

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

Thread.new do 
    do_some_work() 

    sleep(DELAY) 
end 

do_some_work也不是很耗費資源的,以約5秒即可完成平均;但它不應該阻止,如果我經常打電話,那麼就有可能發生限制錯誤。

我不確定在Ruby線程中睡多個小時會有什麼影響。我是否期望使用此代碼的任何嚴重的性能處罰?可能值得注意的是,我無法使用cron作業來完成此任務。

+2

這通常是一個標誌,你需要一個適當的任務調度程序,而不是一些睡眠任意時間的線程。 'cron'在這裏也是一個不錯的選擇。 – tadman

+0

'cron'是我的第一個想法;不幸的是,我不能在這種情況下使用它。不過,我很欣賞這個答案。 – jamesberlage

回答

2

只要Ruby解釋器正在運行,它將在系統上使用內存。因此,如果您保持整個Ruby解釋器進程正常運行,以便該線程每6小時就能喚醒一次並完成它的工作,那可能很糟糕。您可以使用操作系統的系統監視工具來查看該進程需要多少內存。

除此之外,有一個睡眠好幾個小時的線程應該沒問題。

+0

謝謝,我很欣賞答案。 – jamesberlage

相關問題