在应用程序中使用多个线程的一个好处是每个线程都可以异步执行。然而,线程的异步特性意味着必须协调对资源(如文件句柄、网络连接和内存)的访问。否则,两个或更多的线程可能在同一时间访问相同的资源,而每个线程都不知道其他线程的操作。结果将产生不可预知的数据损坏。这个时候我们就需要lock上场了。

Lock的作用

Lock获取给定对象的互斥锁,保证相应的代码块运行时,不会被其他线程中断;直到该对象被释放时其他线程才能访问相应的代码块;

Lock实现本质

通过System.Threading.Monitorenterexit方法实现的

代码实例如下

 

 1 public void PrintByInnerObj(object greating)
 2        { 
 3            Console.WriteLine(greating+"-- before lock");           
 4            object obj = new object();           
 5            lock(obj)
 6            {
 7                Console.WriteLine(greating + "-- is locking");
 8                Console.WriteLine(greating.ToString());
 9                System.Threading.Thread.Sleep(10000);
10            }
11            Console.WriteLine(greating + "--  has unlock");
12        }

相关文章:

  • 2021-11-20
  • 2021-10-26
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2021-10-18
  • 2021-06-11
猜你喜欢
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-04-19
  • 2021-12-09
  • 2021-07-16
相关资源
相似解决方案