求教 ASP.NET 使用队列能否实现抢红包功能

2019-01-15 13:55发布

问题:

因为涉及到并发,新手以前没有处理过这种业务
我的思路是是这样的
//查询红包剩余个数count和剩余额度num

//初始化队列
Queue q = new Queue(count);

lock(obj)
{
//入队操作
}
//分配红包

//出队

//更新数据库

我思路有问题,不清楚这个锁该加在哪里,我想的是应该加在入队操作,但是这样我好像没办法判断什么时候队满,如果把整个锁起来的话队列又没有意义了,求前辈指点一下

回答1:

我理解是不是先点击先抢红包,红包个数满了以后就不能在抢了?
这样是不是要把锁加在剩余个数查询、以及分配红包的整个过程呢?



回答2:

队列一个重要特性是先进先出
你用队列的目的应该是为了保障先到先得
抢红包的几个主要关键点
1、收到请求,检查还有红包没有,有的话进入队列;如果没有红包,返回告知。
2、队列出队,检查剩余金额,和红包个数,根据红包分配规则给出队红包。
3、返回告知红包结果。