"SimpleMUCClient"を使用してsimple botを書きます。しかし、エラーが発生しました:app.rb:73:stop': deadlock detected (fatal) from app.rb:73:in
'です。それを修正するには?問題wuth Rubyスレッド
答えて
実行しているコードは、おそらく別のスレッドで実行されている可能性があります。その特定のスレッドは、Thread.join()
を使って結合されます(Rubyがスクリプトを終了して終了するのを待ちます)。 Thread.stop()
を呼び出すと同時に.join()
を呼び出すと、デッドロックが発生する可能性があります。私はあなたの質問に投票したので、あなたが行っていないので、適切に質問する方法については、StackOverflowのガイドに従う必要があると言いました。まだThread.stop
を呼び出しながら、スレッドへの参加
は、次のように行うことができます。
th = Thread.new do
Thread.stop
end
if th.status === 'sleep'
th.run
else
th.join
end
それはクリーンな方法ではないのですが、それは動作します。また、スレッドを実際に終了したい場合は、代わりにThread.exit
を呼び出す必要があります。
あなたのコードで、私もapp.rb:79: 'join ':デッドロックが検出されました(致命的) \t app.rb:79:'
次にコードの外で起こっていることがあります他の何かがデッドロックの原因となっています。 –
修正方法? **デッドロックを起こさない**(これが本当の質問になる前にもっと多くの情報を提供する必要があります...) – jtbandes
サンプルコードを教えてもらえますか? – nucleartux
いいえ、私は本当にできません。 [this](http://stackoverflow.com/questions/how-to-ask)をお読みください。 – jtbandes