c# 锁的概念

本文深入探讨了线程同步中的锁机制,包括Monitor、Mutex的使用及其区别。Monitor是lock关键字的底层实现,适用于同一线程内互斥,而Mutex则为内核级锁,支持跨进程同步,适合资源消耗大的场景。同时,文章提到了死锁问题,指出同一线程内锁定同一对象不会导致死锁,并强调了正确设置锁对象的重要性。

锁都是同一线程内不限制,仅在跨线程时互斥。

同一线程内是不会死锁的,

lock 关键字

lock的底层本身是Monitor来实现的,所以Monitor可以实现lock的所有功能

lock(obj){}

lock(this){} 可能产生死锁,

同一线程内锁定同一对象不会产生死锁。

Monitor

Monitor.Enter(obj)
MOnitor.Exit(obj);

以上两个锁的锁定对象obj 只能是引用类型,不能是null,string,值类型,
注意:定义的锁对象应该是 私有的,静态的,只读的,引用类型的对象,这样可以防止外部改变锁对象

Mutex

mutex是内核级别的锁,消耗较大资源,不适合频繁使用,
mutex是可以跨进程的,比如我们要实现一个软件不能同时打开两次,那么Mutex是可以实现的,而lock和monitor是无法实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值