多子进程间共享内存(变量)的问题
发布于 9 年前 作者 sjfkai 5563 次浏览 最后一次编辑是 8 年前 来自 问答

一般我们在开发环境下,node都只跑在单线程下。可一般情况下当我们部署在生产环境中的时候,都会启动cpu核数量的子进程。 可这些子进程间的内存是不可直接互相访问的。 那么问题来了,比如: 我要做一个聊天室。 1.在单进程的情况下,只需要维护一个所有用户连接的list,用户发送消息时,向list内的所用连接推送消息即可。 2.可当我们启用多个子进程时,每个子进程都会有一个保存连接到当前进程的用户的连接list。 如果这时用单进程同样的方法进行推送,那只会推送给部分用户而不是所有用户。 这时候就需要子进程间的通信,使每个子进程也推送一次消息。

↑↑不知道以上我说的是否都对。。。


我的问题是: 是不是只要打算在多子进程下运行,并且存在需要共用的变量(如保存所有连接的List)时,都需要实现子进程间通信的功能?

5 回复

不要共享内存(或者说 Node.js 也没提供共享内存的方法),如果是为了触发事件就用 cluster. worker.sendprocess.send. 如果是要共享数据就用数据库和缓存。

nodejs为什么没有提供一个共享内存的模块呢?

@yakczh jvm也没有啊。。要是你,你也会这么设计的。。。

@myy jvm是线程模式 全在内存里,不需要共享

lz换个思路啊,既然要共享内存为什么还要多进程,直接开多个线程不是更好吗

回到顶部