Data structures 如何在异步进程环境中处理共享数据?(Node.js)

Data structures 如何在异步进程环境中处理共享数据?(Node.js),data-structures,asynchronous,node.js,Data Structures,Asynchronous,Node.js,您有一个Node.js服务器正在运行,接受来自外部的连接(通过Socket.io,但这与此无关)。每次建立连接时,都会创建一个“实例”结构,然后将实例复制到全局实例数组中。这部分是异步的 每创建三个实例,您就会将它们全部交给另一个流程,并将它们标记为“已升级”(或者删除它们,或者其他,您就知道了) 问题是,如果连接在一个离散的时间圈内到达,比如说一个接一个100毫秒,那么一切都会顺利进行。如果它们几乎同时到达,那么很可能最终会在缓冲区中有著名的三个实例,而实际上,由于实例对象的创建和缓冲是异步的

您有一个Node.js服务器正在运行,接受来自外部的连接(通过Socket.io,但这与此无关)。每次建立连接时,都会创建一个“实例”结构,然后将实例复制到全局实例数组中。这部分是异步的

每创建三个实例,您就会将它们全部交给另一个流程,并将它们标记为“已升级”(或者删除它们,或者其他,您就知道了)

问题是,如果连接在一个离散的时间圈内到达,比如说一个接一个100毫秒,那么一切都会顺利进行。如果它们几乎同时到达,那么很可能最终会在缓冲区中有著名的三个实例,而实际上,由于实例对象的创建和缓冲是异步的,所以到达的实例要多得多

你能想出缓解这个问题的办法吗


(我会在Redis中缓冲实例,而不是在内存中,但在这种情况下,我会遇到一些严重的序列化问题。每个实例对象都有丰富的方法)

序列化很容易。序列化数据,而不是原型。所有的方法都应该存在于原型中。。。我将重构访问和缓冲业务对象的方式