多并发的情况如何实现"座位编排"?
对nodejs研究不深,现在遇到一个难题无法突破,特来请教。
现在需要实现一个座位编排的功能,非常简单的逻辑: 新座位 = 从数据库查询现在已使用的最大座位号 + 1 在多个请求串行来的时候不会有问题,当多个请求同时到就会出现多个人分配到了同一个座位号
我分析了下问题应该是这样产生的: 请求A到来 -> 请求A从数据库查询现有最大座位号 -> 查询请求还未返回的同时请求B到来 -> 请求B从数据库查询现有最大座位号 -> 请求A查询请求返回 -> 请求B查询请求返回 ->…
就这样两个同时到的请求查询到了同样的最大座位号。
该如何解决呢?
3 回复
这不就类似写入锁的机制。你可以考虑下
排队就行了 查询最大座位号,分配座位号 座位号-- 处理下一个请求
@kateryang 找到这个读写锁的模块测试了下可以解决我的问题了 https://github.com/71104/rwlock