Node.js的是單線程。所以兩個獨立的請求不可能同時改變一個全局變量。所以從理論上講,這是安全的。但是,如果您要將用戶A的數據臨時保存在一個變量中,然後當用戶A稍後提交另一個請求時,請注意用戶B可能會在潛在改變用戶A的數據之間發出請求。
對於這樣的情況保持全局值在數組或對象是分離的用戶數據的一種方式。另一種策略是在回調密集型或面向事件/承諾的庫(如socket.io)中使用閉包。
當涉及到多線程或者多,消息傳遞風格的API類似節點的內置集羣模塊,因爲每個進程都有自己的全球不重挫全局的同樣的保障。有幾個多線程模塊的實現類似 - 每個線程一個節點實例。然而,共享內存風格的API不能做出這樣的保證,因爲每個線程現在都是一個真正的操作系統線程,它可能會搶佔對方並打破其他內存。因此,如果您決定試用其中一個多線程模塊,請注意這個問題。
有可能利用消息傳遞雖然實行假共享內存 - 有點像我們如何使用Ajax或socket.io做到這一點。所以我個人會避免使用共享內存風格的多線程,除非我真的需要協作處理一個非常大的數據集,從而導致消息傳遞體系結構停滯不前。
話又說回來,記住,網絡與信息是HTML和XML和JSON一個巨大的消息傳遞架構。因此消息傳遞擴展到Google大小。
關於用戶數據部分,用戶A嘗試存儲全局數據。無論誰打開請求,都會將數據追加到全局數組中。然後當用戶B打開它時,他可以自己使用全局數據。我想我澄清了不清楚的部分。 – Gasim
我需要閱讀更多關於多線程。感謝您的信息! – Gasim