Node.js的是单线程。所以两个独立的请求不可能同时改变一个全局变量。所以从理论上讲,这是安全的。但是,如果您要将用户A的数据临时保存在一个变量中,然后当用户A稍后提交另一个请求时,请注意用户B可能会在潜在改变用户A的数据之间发出请求。
对于这样的情况保持全局值在数组或对象是分离的用户数据的一种方式。另一种策略是在回调密集型或面向事件/承诺的库(如socket.io)中使用闭包。
当涉及到多线程或者多,消息传递风格的API类似节点的内置集群模块,因为每个进程都有自己的全球不重挫全局的同样的保障。有几个多线程模块的实现类似 - 每个线程一个节点实例。然而,共享内存风格的API不能做出这样的保证,因为每个线程现在都是一个真正的操作系统线程,它可能会抢占对方并打破其他内存。因此,如果您决定试用其中一个多线程模块,请注意这个问题。
有可能利用消息传递虽然实行假共享内存 - 有点像我们如何使用Ajax或socket.io做到这一点。所以我个人会避免使用共享内存风格的多线程,除非我真的需要协作处理一个非常大的数据集,从而导致消息传递体系结构停滞不前。
话又说回来,记住,网络与信息是HTML和XML和JSON一个巨大的消息传递架构。因此消息传递扩展到Google大小。
关于用户数据部分,用户A尝试存储全局数据。无论谁打开请求,都会将数据追加到全局数组中。然后当用户B打开它时,他可以自己使用全局数据。我想我澄清了不清楚的部分。 – Gasim
我需要阅读更多关于多线程。感谢您的信息! – Gasim