10
Sinatra Webサーバのスレッドで、「長時間実行」(実行に約0.5秒かかります)タスクを実行します。Rubyサーバで実行中のスレッドを数える方法
私は忙しくならば、スレッドが山積みされますので、ウェブ応答はだから私は、私は私が忙しくならば、それが同期やるだろうと考えていた...、
を約20ミリ秒かかります。..
if (running_thread_count > 10)
stuff_that_takes_a_second()
else
Thread.new do
stuff_that_takes_a_second()
end
end
を
実行スレッドの数を取得するにはどうすればよいですか(まだ起動していないスレッドの数が必要です) - running_thread_countをどのように記述しますか?
def running_thread_count
return Thread.list.count
end
実行中のスレッドを確認する必要はありますか?つまり、スレッドの実行が終了すると、Thread.listに戻りますか?
私はjoinを呼び出すことは目的を破るものではありません。私たちがたくさんのスレッドを使ってバックアップしない限り、すぐに返ることです。
の地位を持つ。しかし 'join'、すべてのスレッドを終了することなく、それらのいずれかが実行を完了した場合されているスレッドの数を与えます。 'Thread.list.count'は、現在実行中のスレッドの数を取得します。 'Thread'は処理中のスレッドに対して' 'sleep ''または '' run "'を返す 'status'メソッドを持っています。私は答えとしてコードを追加しました。 – Kashyap
私は、Webサーバーとして動作しているRubyプログラムが常に稼働していると考えていました。そのため、Webリクエスト中に開始されたスレッドは完了まで実行されますか? –
あなたはそこにポイントを持っています。もっと実験します。ありがとうございました – Kashyap