我偶然阅读这个article,它基本上允许使用互斥来避免在单个进程上运行的竞争条件。提交人指出
如果你在多个进程上运行你的应用程序(例如,通过使用集群模块,工作线程或像pm2这样的多进程运行器),在我们的代码中使用互斥锁是不会解决跨进程的竞争条件的。如果您在多个服务器上运行应用程序,也会出现这种情况。
我很确定这是一个典型的公司运营购物中心的用例。人们可以同时购买它,系统可能会让一些用户仍然能够购买,尽管没有更多的数量了。
可以避免只在单个进程上运行,但是当服务器使用pm2进行生产时,人们如何解决多个集群的互斥锁问题?还是有其他方法不使用PM2?
1条答案
按热度按时间ny6fqffe1#
互斥是用来防止多个进程同时编辑变量,这将导致竞争条件,如在文章中。
对于你的例子关于购物中心和一般usecase,我们通常存储的可用项目的数量在持久性存储或数据库,因为你想保持可用项目的数量,即使在程序关闭。如果你在变量中存储值,程序关闭后所有内容都将被删除。持久存储和数据库都有自己的锁机制,可以同时处理多个进程访问值。
还有其他技术可以处理您的示例。