防止在node.js应用程序中挨饿

时间:2013-11-04 11:38:38

标签: javascript multithreading node.js

我是node.js的新手,我对它所使用的基于异步事件循环的执行模式以及它可以在实时Web应用程序中实现的结果印象深刻。我理解,由于node.js是单线程的,因此它可以利用多核CPU可用的并行性的唯一方法是为每个核心生成一个新的实例,(Cluster使用的方法node.js),我认为这不是真正的并行性。但是现在我对另一个问题很感兴趣:

假设我有这样的设置,我在每个可用的CPU核心中运行一个实例,我怎样才能有效地确保应用程序使用的独占锁不会导致任何饥饿?我们非常感谢应遵循的指导方针,最佳实践(如果有)以及此方面的任何其他帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我同意你的陈述。但是并发而不是真正的并行性是节点开发人员的目标。真正的并行性是Apache服务器实现的,我们知道它的问题(多线程)。添加了群集以利用可用的多核CPU。

要回答您的问题,节点使用循环调度程序(请参阅此commit)。它将传入的请求逐个分发给每个工作人员。关于锁定,如果工人并行运行,他们将得到最好的利用。在服务器中,每个工作器独立于其他工作器。如果您需要锁定,请确保它们不会闲置。