欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 悲观锁与乐观锁

悲观锁与乐观锁

2025/4/22 11:46:36 来源:https://blog.csdn.net/2504_90266773/article/details/147396499  浏览:    关键词:悲观锁与乐观锁

悲观锁:操作前先把资源锁住,别人要用得等你用完再说。

乐观锁:不加锁,但在提交前会检查数据有没有被别人修改过,如果改过就不提交。

悲观锁是“先上锁再做事”,乐观锁是“做事前先问问有没有人动过”。

截取部分代码分析

代码功能:两个用户同时提交订单买同一个东西,系统使用乐观锁处理。假设有三件物品,这两个用户都想要三个,分给谁

for id,count in carts.items():for i in range(10):sku=SKU.objects.get(pk=id)if sku.stock < count:#返回库存不够#记录旧的库存量oldStock=sku.stock#记录新的库存和销量newStock=sku.stock  -countnewSales=sku.sales  +count#只有我看到的库存没被人改过,我才能改#只有第一个提交 SQL 的人能成功#第二个因为 stock 已经不等于 oldStock,update 语句就更新失败(res==0)res=SKU.objects.filter(id=id,stock=oldStock).update(stock=newStock,sales=newSales)if res==0:sleep(0.7)#如果失败,重新执行continueelse:#执行成功后的处理breakreturn JsonResponse({'code':0,'errmsg':'ok','order_id':order_id})
​

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词