CNode

多并发的情况如何实现"座位编排"?

问答
Wwinddriver发布于11 年前最后回复11 年前3 回复3923 浏览0 收藏

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

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

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

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

该如何解决呢?

查看回复

回复 (3)

K
kateryang#1·11 年前

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

Y
yakczh#2·11 年前

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

W
winddriver#3·11 年前
引用 kateryang这不就类似写入锁的机制。你可以考虑下

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

参与回复
登录后即可参与回复。登录