多并发的情况如何实现"座位编排"?
发布于 10 年前 作者 winddriver 3460 次浏览 最后一次编辑是 8 年前 来自 问答

对nodejs研究不深,现在遇到一个难题无法突破,特来请教。

现在需要实现一个座位编排的功能,非常简单的逻辑: 新座位 = 从数据库查询现在已使用的最大座位号 + 1 在多个请求串行来的时候不会有问题,当多个请求同时到就会出现多个人分配到了同一个座位号

我分析了下问题应该是这样产生的: 请求A到来 -> 请求A从数据库查询现有最大座位号 -> 查询请求还未返回的同时请求B到来 -> 请求B从数据库查询现有最大座位号 -> 请求A查询请求返回 -> 请求B查询请求返回 ->…

就这样两个同时到的请求查询到了同样的最大座位号。

该如何解决呢?

3 回复

这不就类似写入锁的机制。你可以考虑下

排队就行了 查询最大座位号,分配座位号 座位号--  处理下一个请求

@kateryang 找到这个读写锁的模块测试了下可以解决我的问题了 https://github.com/71104/rwlock

回到顶部