C#_关键字:Lock的解释和使用

定义

  lock关键字,互斥锁,通过锁住某一对象从而将语句块({})里面的代码设置为临界区。 

  线程在线性执行代码时若遇到互斥锁,必须先申请互斥锁的访问权,若访问成功,则继续线性访问互斥锁后的临界区代码块。声明如下:  

1 Object thisLock = new Object();
2 lock (thisLock)
3 {
4     // Critical code section.
5 }

  lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。

使用

  •   锁定的对象

  锁定的对象不能是Public类型,或者 lock (this)、lock (typeof (MyType)) 和 lock ("myLock") 使用都是不符合规范。

  Lock的对象只有在非外部访问的情况下才不会对外部的线程代码产生影响。由于lock (this)、lock (typeof (MyType)) 和 lock ("myLock")中的this,typeof(MyType)有可能被外部访问,外部代码若存在与"myLock"相同的字符串,这些对象都会被锁住,对进程代码产生不可预测的影响。故而建议使用Private对象作为锁的对象。

转载于:https://www.cnblogs.com/qi123/p/8992170.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值