我想在 Sinatra Web 服务器的线程中执行“长时间运行”(执行大约需要 0.5 秒)任务。
网络响应大约需要 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 ,因为这会破坏目的 - 除非我们有很多线程在工作,否则会快速返回。