我工作的一個C#編碼行使此代碼:使用鎖keywork的C#
class Program
{
static object sync = new object();
static void SafeRun()
{
lock (sync)
{
Thread.Sleep(1000);
}
}
static void Main(string[] args)
{
lock (sync)
{
SafeRun();
}
Console.Write("Safe");
}
}
}
什麼將被打印出來?
- 什麼也沒發生死鎖。
- 它不編譯。
- 將打印「安全」。
我認爲會發生死鎖,但是當我運行代碼「安全」時會打印出來。
那麼,你能向我解釋爲什麼3是正確的,爲什麼1不正確?
謝謝!
在這個程序中只有一個線程正在運行,主線程,同步資源被訪問兩次,但由同一個線程訪問,所以不會出現死鎖情況。 –
運行該程序,看看它會打印什麼:這是你的功課,不是嗎?順便說一句,它會打印「安全」 – CodingYoshi