猿问

C# 关于lock关键字的疑惑...高手请进...

string a="abc";

lock(a){....};在实际使用中我发现锁定的不是a对象,而是以a对象作为标识的{}内的代码块..

 

但发现资料上是像图中那样说的,是我没理解正确呢还是资料错误?请高手解惑.

using System;using System.Threading;class Program
{ 
    static void Main(string[] args)
    {
        Student s = new Student { Name="yh"};
        Thread t=new Thread (new ThreadStart(()=>{lock (s) { Thread.Sleep(100000); }}));
        t.Start();
        Thread.Sleep(1000);
        Console.WriteLine(s.Name);//这里没有等锁的线程结束才执行..所以我觉得资料说的不对..你们认为呢?
        
        Console.ReadKey();
    }

 

}internal class Student
{    public string Name { get; set; }


扬帆大鱼
浏览 813回答 1
1回答
随时随地看视频慕课网APP
我要回答