Я хочу выполнить задачу "длительное время" - (занимает около 0,5 секунды для выполнения) в потоке на веб-сервере Sinatra.
Веб-ответ занимает около 20 мс, поэтому, если я занят, потоки будут накапливаться...
Итак, я думал, что сделаю это, если я занят.
if (running_thread_count > 10)
stuff_that_takes_a_second()
else
Thread.new do
stuff_that_takes_a_second()
end
end
Как вы получаете количество запущенных потоков (я хочу, чтобы количество запущенных потоков и еще не выполнено) - как вы кодируете run_thread_count?
def running_thread_count
return Thread.list.count
end
Или мне нужно проверить запущенные потоки? то есть, когда поток завершен, перестанет ли он возвращаться в Thread.list?
Я не хочу называть соединение, так как это победит цель - вернуть ее быстро, если мы не поддерживаем много потоков, работающих.