如何分析thinkPHP框架中乐观锁与悲观锁的实例应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计564个文字,预计阅读时间需要3分钟。
原文示例
本示例展示了thinkPHP框架中的乐观锁和悲观锁概念。
乐观锁示例:示例:对于一个正在热销的火爆商品,同一时间有10个人同时发起购买请求,乐观锁确保这10个线程都能正确地完成购买。
悲观锁示例:示例:同样对于这个火爆商品,悲观锁则确保同一时间只有一个线程能购买,其他线程必须等待,直到当前线程的购买操作完成。
本文实例讲述了thinkPHP框架乐观锁和悲观锁。分享给大家供大家参考,具体如下:
乐观锁:
例子对于一个正在出售的火爆商品,同一个时间,同时有10个人同时发起了10个线程来购买,10个线程读取到数据库的库存有20件和version为9。
那么乐观锁读取num数量和version版本两个字段,在更新的结果时候,我们就要更新条件where version=9这条语句,具体UPDATE goods SET num=num-1,version=version+1 WHERE version=9 and id=1,这样的话,如果其中一条执行成功后,数据库中version的值为10了,所以剩下的9个人线程都会失败了。
本文共计564个文字,预计阅读时间需要3分钟。
原文示例
本示例展示了thinkPHP框架中的乐观锁和悲观锁概念。
乐观锁示例:示例:对于一个正在热销的火爆商品,同一时间有10个人同时发起购买请求,乐观锁确保这10个线程都能正确地完成购买。
悲观锁示例:示例:同样对于这个火爆商品,悲观锁则确保同一时间只有一个线程能购买,其他线程必须等待,直到当前线程的购买操作完成。
本文实例讲述了thinkPHP框架乐观锁和悲观锁。分享给大家供大家参考,具体如下:
乐观锁:
例子对于一个正在出售的火爆商品,同一个时间,同时有10个人同时发起了10个线程来购买,10个线程读取到数据库的库存有20件和version为9。
那么乐观锁读取num数量和version版本两个字段,在更新的结果时候,我们就要更新条件where version=9这条语句,具体UPDATE goods SET num=num-1,version=version+1 WHERE version=9 and id=1,这样的话,如果其中一条执行成功后,数据库中version的值为10了,所以剩下的9个人线程都会失败了。

