日期:2014-05-17  浏览次数:20457 次

一个面试时问到的问题,大家帮忙看看吧
是这样的一个问题,就是在网上购物的时候,如果某一样物品只有一个了,而有两个用户都想购买这一个物品,这两个用户在他们的电脑上面看到的网页中显示的物品数量都是一个,如果这两个用户都点击购买按钮的话,就会出问题了,这个问题该怎么解决,当时没回答出来,现在仔细想想,这个问题是不是等于在问:如何防止并发操作? 对这个问题的处理,网上给出的处理方法好像都是从数据库这个角度来说,用锁表等方法,就可以处理了,那是不是就不关.net什么事了?

------解决方案--------------------
是并发问题,.NET中也可以控制并发问题。数据库中也可以控制。
------解决方案--------------------
.NET中也可以
不过大多好像都在数据库中进行控制吧
------解决方案--------------------
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconprocessingtransactions.asp 

http://msdn.microsoft.com/library/CHS/cpguide/html/cpconDistributedTransactions.asp?frame=true
------解决方案--------------------
select的时候锁定一下,只能让一个人看到就可以了吧。
也就是说,谁先打开,说能看到那条记录。
------解决方案--------------------
实质就是数据库的处理方式,这和.net(asp.net)息息相关的,不可能只考你语言(C#)的语法使用。
------解决方案--------------------
每次购买都要判断剩余商品数量,这是常识
------解决方案--------------------
商品是有数量的,谁先点谁就有这个权限
------解决方案--------------------
探讨

引用:
select的时候锁定一下,只能让一个人看到就可以了吧。
也就是说,谁先打开,说能看到那条记录。

我的想法是 两个用户都能看到那条记录,在数据库中对update操作加锁,当一个用户点击购买按钮时对数据库中的表记录进行updapte操作,当这个用户的购买操作完成后,别的用户才能进行购买操作,