竞争条件:锁定具有相同参数的方法
本文关键字:参数 方法 条件 锁定 竞争 | 更新日期: 2023-09-27 18:05:15
我正在开发一个asp.net mvc 3 web应用程序。在我的应用程序中,我有一个javascript客户端发送调用到我的服务器。其中一个调用指向我的一个方法,该方法依次为:
- 创建一个对象的新实例-
- 保存到数据库
- 调用远程web服务器。
我通过查询数据库来决定是否退出这个函数,看看这个对象是否真的存在(如果存在,我退出)。
我的问题是,如果两个调用一个接一个地进行,对象还没有机会被保存到数据库中,因此两个线程都会认为它们需要继续。
我想要的是锁定方法,只有线程调用相同的参数。对整个方法甚至部分方法使用锁是不可接受的,因为这将导致严重的性能问题。
如何做到这一点?
在此场景中使用具有可序列化隔离级别的数据库事务。这将确保读取和插入操作的一致性。