一定の時間が経過しても終了しないと、私が作成したスレッドが死ぬことを望みます。これを行うためのエレガントなやり方や慣用的な方法はありますか?今、私はウォッチャースレッドを作るために考えています:一定の時間が経過したら、どのようにしてrubyスレッドを削除できますか?
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
ええ、私はそれが非同期であることを望んでいます - それは一種のポイントです。スレッドが止まったら、スレッド自体をきれいにしたいです。 –