ASP.NET-asp.net临界资源控制问题??

WP主题讨论 WP主题讨论 主题:1013 回复:2239

ASP.NET-asp.net临界资源控制问题??

夜无邪 发布于 2017-03-14 字数 207 浏览 951 回复 2

如题~~例如我要做一个购票系统,票的剩余数存在数据库里,在有很多人同时购票的时候,怎么才能防止不同的人购买到同一张票???
如果通过存储过程进行购买后剩余票数减一的操作是不是能够防止并发冲突~~~~??

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

归属感 2017-08-18 2 楼

对购票,出票的方法的“票ID”进行加锁,变成原子操作,对于同一张票,只允许一个请求占有资源去访问,出票后,将该票从“待售票”的池或库中去除掉。

清晨说ぺ晚安 2017-07-18 1 楼

简单的流程就是库存查询、表锁定、出入库操作
更详细点,采用多个线程同时访问,只让其中一个线程最先取得数据并对其加锁,其它线程则阻塞直到取得数据的线程执行完,此时被加锁的数据得到释放(解锁),其它线程得到通知取得数据继续执行。
上面这个方法最大的缺点就是用户等待时间长。另一个方法是采用缓存机制,先把用户请求放到缓存中,达到一定数量的时候分批顺序访问数据,当缓存中的请求达到一定数量的时候(达到票数)禁止用户请求。