매 초마다 30 초 동안 점검을 실행하려고합니다. Ruby를 사용하여이 작업을 수행하는 명확한 방법을 아직 찾지 못했습니다. 이 같은 것을 현재 시도 :특정 시간 간격 동안 또는 조건이 충족되는 동안 루프를 수행하십시오.
until counter == 30
sleep 1
if condition
do something
break
else
counter +=1
end
잠깐, 그 트랙에서 스레드를 완전히 멈추게하는 sleep을 사용해야하는 것과 같은 문제가 있습니다. 수면을 사용하지 않고 위와 비슷한 것을 성취 할 수있는 또 다른 방법이 있습니까? 시간 간격에 따라 뭔가 순환하는 방법이 있습니까?
카운터 변수를 없애고 1..30에서 for i 또는 1.upto (30) 또는 (1..30) .each 중 하나를 사용하십시오. – meagar
기다리는 동안 스레드로 무엇을하고 싶습니까? 확인하고 싶다면 [IO # select] (http://www.ruby-doc.org/core-1.9.3/IO.html#method-c-select)와 같은 것을 체크하고 싶을 것입니다. IO가 없으면 다른 작업을 수행하십시오. 위의 코드에서 수행해야 할 다른 처리가 있는지 여부는 분명하지 않습니다. 잠자는 것만으로도 본질적으로 잘못된 것은 없습니다. –
질문이 모호하여 죄송합니다. 이벤트 기반/다중 스레드 기반 이벤트 기반 봇 실행 중입니다. 루프를 트리거 한 이벤트의 30 초 내에 조건이 발생하는지 확인하고 싶었습니다. 그 30 초 이내에 수표를 꽤 자주 (1 초 또는 OS 간격)하고 싶었습니다. 조건은 다른 이벤트에서 업데이트/발생하며이 루프가 발생하고 발생하는 상황을 기반으로 반응을 확인하고 수행하도록합니다. –