<blockquote>
<p>If I set threadsafe: true in my app.yaml file, what are the rules that govern when a new instance will be created to serve a request, versus when a new thread will be created on an existing instance?</p>
</blockquote>
<p>就像人们在这里说的,如果前一个实例已经在使用10个线程,那么将启动一个具有新线程的新实例。如果所有其他线程都很忙,那么将创建一个新线程,它们必须在等待响应或计算结果。在</p>
<blockquote>
<p>If I have an app which performs something computationally intensive on each request, does multi-threading buy me anything? In other words, is an instance a multi-core instance or a single core?</p>
</blockquote>
<p>现在这个问题很有争议。每个人都知道答案,但他们仍然持怀疑态度。如果任务只是基于计算,多线程永远不会给你带来任何好处,除非你使用多核处理器,不要问我为什么多核处理器会有更好的帮助,你知道答案。现在googleappengine还不够成熟,不足以决定何时应该将新线程调度到另一个处理器/核心(如果存在的话),那么只有新的实例被调度到另一个核心/处理器。希望线程在另一个内核/处理器中运行?好吧,把一些技能扔到那里去吧!记住,线程是否应该在其他内核/处理器中运行取决于您自己,引擎不能对此负责,因为这可能会导致许多混乱,引擎不是上帝。简而言之,默认情况下实例是单核的,引擎不能为您决定何时应该使用多核。在</p>
<blockquote>
<p>Or, are new threads only spun up when existing threads are waiting on IO?</p>
</blockquote>
<p>我的回答的第一部分澄清了这一点。是的,它们只在现有线程繁忙时才启动,这就是线程安全的工作原理,以防止死锁。在</p>
<p>现在我可以告诉你,从我个人的经验来看,我在appengine上工作了好几个月,编程/调试/测试了高度依赖于线程安全架构的应用程序。如果你愿意,我可以添加推荐信(我没有推荐信,只有个人经验,但我已经准备好为你搜索并把东西放在桌面上),但我不认为在这种情况下需要它们,threadsafe的工作方式显而易见,我已经验证过了。在</p>