2011-10-30 62 views
4

我试图弄清楚这是否将是node.js的子进程像样的用例:node.js的子进程

我有一个多玩家游戏里的人从事到1V1的比赛。我应该为每场比赛使用一个子进程吗?

+0

你为什么?没有必要这样做,除非你在做阻塞操作。 – OneOfOne

回答

5

不是真的需要。由于节点是基于事件的,单个进程将能够处理数千个这样的球员对。假设您使用的是now.js,您将为每个这样的对创建“房间”/“组”/“频道”。命名规则可能因您使用的图书馆而异,但总体方法相同 - 分配所有将在相同“频道”中彼此对战的玩家。如果你实际上为每个这样的玩家对使用了一个子进程,那么你实际上正在消除构建node.js的目的。

另一方面,产生子进程的真实世界用例在forever.js(以及cluster.js)中执行。这里的子进程(也称为工作者)由主进程产生。工作进程执行实际工作,例如处理HTTP请求,而主进程只监视工作进程,并在现有进程死亡时产生新工作进程(由于各种原因)。子进程也用于调用非nodejs应用程序。

2

关于Node.JS的一件很酷的事情是,您可以在一个线程中创建几乎所有的逻辑,并且通过一些非常酷的内核功能,Node知道何时可以处理新的套接字信息。

Node正准备逃跑的一件事是单线程连接模型。看看this。节点适用于I/O绑定的应用程序,所以如果您的游戏需要太多处理,例如计算物理对象,Node可能并不适合您。

+0

“如果你的游戏需要太多的处理,例如计算物理对象,Node可能不适合你” - 不再那么真实:http://nodejs.org/docs/latest/api/cluster.html – thejh