我試圖每隔30秒檢查一次火情。我還沒有找到一個明確的方式來與Ruby做到這一點。嘗試這樣的事情目前:執行一定的時間間隔的循環或滿足條件
until counter == 30
sleep 1
if condition
do something
break
else
counter +=1
end
問題有類似的東西是它使用的睡眠,它停止線程在其軌道上的一整秒。有沒有另一種方式來實現類似於上述的東西,而不使用睡眠?有沒有辦法在基於時間的時間間隔上有一些循環?
擺脫計數器變量,並使用'for 1..30'或'1.upto(30)'或'(1..30).each'。 – meagar 2013-04-09 03:34:41
在等待時,你希望用線程做些什麼?如果您嘗試檢查某些內容,請查看[IO#select](http://www.ruby-doc.org/core-1.9.3/IO.html#method-c-select) IO,如果不在那裏,則做其他事情。從上面的代碼中不清楚是否有其他處理要做。睡覺沒有任何天生的錯誤。 – 2013-04-09 03:35:24
對不起,有問題。我正在運行事件驅動/多線程的基於事件的機器人。我想檢查一個條件是否發生在觸發循環的事件的30秒窗口內。我希望在30秒內相當頻繁地進行檢查(1秒或24秒)。條件在另一個事件中更新/發生,我希望這個循環根據出現/未出現的條件來檢查和執行反應。 – 2013-04-09 14:10:17