如何同步一些线程

时间:2011-09-29 02:54:53

标签: asp.net asp.net-mvc

我使用asp.net mvc1.0进行在线支付系统,如果只有一个人只有一个人,我怎么能只允许一个人买东西。另外我在这个系统中使用其他支付系统(如ebay)。我的意思是当一个产品的库存只有一个,并且一次购买它的人不止一个时,我怎么能让一个人可以买到它成功其他人不能再买了。

3 个答案:

答案 0 :(得分:1)

您可能需要使用数据库事务来处理订单。它不仅仅是锁定一个对象(在这种情况下,它必须是一个静态对象才能被所有Web用户共享),而是关于完整订单的访问权限。交易将是您需要使用的。

此外,当您说“我在此系统中使用其他付款”时,尚不清楚。这对销售库存的交易管理没有任何影响。

答案 1 :(得分:0)

为了只有一个线程可以访问关键方法,您可以使用Lock关键字。

lock (myObj)
{
}

如果您正在寻找更多内容,那么需要更多背景来理解它。

答案 2 :(得分:0)

您需要为系统添加并发访问控制。 例如,您可以实现这个简单的算法:

  1. 检查商店中存在的要出售的物品的数量
  2. 减少您要出售的对象数量
  3. 支付对象
  4. 如果付款正常则结束交易
  5. 如果付款失败,则执行回滚交易,增加数量并退还货款;)
  6. 重要的是第2点,使用乐观验证算法更新商店中元素的数量。例如,在SQL操作的WHERE条件中写入您在poit 1中读取的数量值。 如果有人更改此值,则更新失败,必须中断销售操作。