c#中lock的使用


private object o = new object();
public void Work()

{
  lock(o)
  {
    //做一些需要线程同步的工作
  }
}

说白了就是防止同一个操作被锁死的情况。比如说,日志的写入,或者文件的读取。当一个操作正在读取某一个文件的时候,另一个操作也需要读取某一个文件,导致第二个的操作就会报错。

这个时候就需要使用lock锁的使用。

lock锁就是当第一个操作正在读取某个文件的时候,第二个操作就只能等待读取某个文件。直到第一个操作读取完成,lock被释放之后才能读取。

说白了就是防止互相抢占资源的一个操作。

 

再说详细一点就是

1、第一个操作lock(o)时,就是说,我要做相对应的操作了,这时候,object o就有了一个标记,说我已经被锁住了

2、第二个操作的时候,看到object o被锁住了,就只能等待,直到第一个操作完成之后,o被释放了,然后第二个操作才能进行操作。

3、然后o就被第二个操作锁住了,如此类推。

参考:https://www.cnblogs.com/zwt-blog/p/4812627.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM