悲观锁:需要程序员自己管理数据对象的锁处理,当某个用户获取数据并给数据加上锁,直到操作完成并最终提交更改到数据库,锁才会释放,在整个过程中,其他用户想要获取该数据就需要等待,直到该数据上的锁被释放,才可以获取该数据。悲观锁虽然可以处理并发保证数据的完整性,但是会损耗性能,形成“排长队”的情况。
下面使用控制台简单演示使用悲观锁实现抢票并发控制:
1、创建一个[tickets]表(主键,目的地,余额)
CREATE TABLE [dbo].[tickets](
[ID] [int] primary key NOT NULL,
[Destination] [nvarchar](50) NOT NULL,
[Balance] [int] NOT NULL,
)2、添加一条数据(
余票为2)
3、编写控制台代码
static void Main(string[] args)
{
Console.WriteLine("开始抢票-------------------------------------------------------------");
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
using (var tran = conn.BeginTransaction())//开启事务
{
try
{
Console.WriteLine("第一步:查询余票");
&

本文介绍了悲观锁在票务系统抢票并发控制中的应用。悲观锁确保数据完整性,但可能导致性能下降,形成等待队列。通过创建tickets表并编写C#控制台代码,展示了如何使用悲观锁实现抢票过程,直至所有票被抢完。
最低0.47元/天 解锁文章
1688

被折叠的 条评论
为什么被折叠?



