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

posted @ 2021-07-16 16:56  masha2017  阅读(2891)  评论(0编辑  收藏  举报