Home [C# 筆記] Threading - C# lock to Monitor Method Calls
Post
Cancel

[C# 筆記] Threading - C# lock to Monitor Method Calls

C# lock to Monitor Method Calls

直接結論:
lock 是一個語法糖,它將 Monitor物件進行包裝。

lock最終產生的是:Monitor.EnterMonitor.Exit方法,並且包含了trycatch。保證在崩潰的時候執行到finally中的Monitor:Exit方法,進行鎖的釋放。

所以lock鎖定的方式,要比Monitor.EnterMonitor.Exit安全一些。

Monitor.Enter 方法

  • Monitor.Enter(object)獲取鎖
  • Monitor.Exit(object)釋放鎖

lock 改成Monitor.Enter 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
static object baton = new object(); //接力棒:獲得使用權的變數

static void Main(string[] args)
{
    //lock (baton) 
    Monitor.Enter(baton); //獲取鎖
    try
    {
        Console.WriteLine("Got to baton");
    } finally //finally無論如何都會執行
    {
        Monitor.Exit(baton); //釋放鎖
    }
}

C# lock to Monitor Method Calls
C# Monitor和Lock的定义及区别
C#中的lock和Monitor.Enter和Monitor.Exit

This post is licensed under CC BY 4.0 by the author.