首页 新闻 会员 周边 捐助

c#里面的lock能不能解决下面这个问题

0
悬赏园豆:15 [已解决问题] 解决于 2020-10-13 14:55

更新订单状态为锁定,锁定后不允许其他用户进行操作

状态更新时需要加锁,保证多用户操作时,状态一致

多个用户同时加锁时,只允许一个用户操作成功,其他用户返回订单状态不允许加锁

代码没有用到多线程,加lock有没有用

灬丶的主页 灬丶 | 初学一级 | 园豆:9
提问于:2020-10-13 11:34
< >
分享
最佳答案
0

如果是 ASP.NET 应用,天生就是多线程。

收获园豆:6
dudu | 高人七级 |园豆:30948 | 2020-10-13 11:37

什么意思,代码属于单线程,但是多个用户同时操作也可以使用lock锁住对象?

灬丶 | 园豆:9 (初学一级) | 2020-10-13 11:38

@灬丶: 如果lock的是static对象,不管是不是多线程,都会有用。

dudu | 园豆:30948 (高人七级) | 2020-10-13 11:58
其他回答(3)
0

你这问题就有问题。用户又是多,代码又不是多线程...你是初写web程序?web程序只要不是特定得,几乎的框架本身就是多线程哈。如果是直接的客户端程序,多用户也不太可能不是“多线程”(不然还得自己实现时间片,通常只有写片子因为没有os,需要自己实现这玩意儿)。

收获园豆:3
花飘水流兮 | 园豆:13615 (专家六级) | 2020-10-13 11:39

我的意思就是一个简单的update,然后加一个lock有用吗?我的理解是lock是对多线程才有用

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-10-13 11:41

@灬丶: 建议看看操作系统一书。如果不是多用户(多线程),一段串行函数栈那lock 有或者没有 —— 又有什么意义呢。

支持(0) 反对(0) 花飘水流兮 | 园豆:13615 (专家六级) | 2020-10-13 12:13
0

没有用到多线程,加lock当然多此一举。不过如果你做的是web项目,通常框架是把用户的一次请求用一个线程来处理的,是多线程,可以用lock。

收获园豆:3
会长 | 园豆:12463 (专家六级) | 2020-10-13 11:58
0

订单在内存吗?内存的话你可以用 lock 锁住,如果在数据库。你程序 lock 有什么用

收获园豆:3
flyfishing | 园豆:943 (小虾三级) | 2020-10-13 14:33

没有啊,可以锁住那个方法

支持(0) 反对(0) 灬丶 | 园豆:9 (初学一级) | 2020-10-13 14:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册