일정한 시간이 지나면 끝내지 않으면 죽게 만드는 스레드를 원합니다. 이것을 할 수있는 우아하고 관용적 인 방법이 있습니까? 지금은 감시자 스레드를 만들 생각입니다 :일정 시간이 지난 후에 어떻게 루비 스레드를 죽일 수 있습니까?
def myfunc
t = Thread.new{
#do stuff
}
# watcher thread
Thread.new{
result = t.join(20) # join returns nil if it timed out
t.kill if result.nil?
}
# continue on asynchronously from both threads
end
아하! 내가 문제를 해결하기 위해 그것을 사용하는 방법의 예를 포함하여 답변을 편집 ... –
나는 스레드 내에서 Timeout 객체를 래핑 할 필요가 없다고 생각합니다. Timeout은 코드 블록에 대한 스레드를 생성하므로 모든 것을 비동기로 만들지 않는 한 그러지 않아도됩니다. – Miguel
네, 비동기 적이기를 바랍니다. 요점이 있습니다. 스레드가 멈 추면 스레드 자체를 지우고 싶습니다. –