lock 的一个问题,求解答!
对于只有一个线程中,如果对一个对象进行两次lock,会不会导致死锁
例如
class Program
{
private static readonly object obj = new object();
static void Main(string[] args)
{
lock (obj)//获取obj锁
{
lock (obj)//获取obj锁失败?以下代码不会执行?但实际上是可以执行的
{
Console.WriteLine("hello");
}
}
Console.Read();
}
}
我以为在第二个lock(obj)中的代码块会无限等待,这里会死锁,但实际不是,可以输出hello的
这处有点不太理解,求解释!
------解决方案--------------------lock是指多线程之前的访问控制,同一线程没有lock的概念。
------解决方案--------------------楼主还没弄清楚lock的用法吧
------解决方案--------------------lock防止并发操作,你在单线程里面。只有一个一个线程访问,所以不需要lock。