c#同步锁的行为
本文关键字:同步 | 更新日期: 2023-09-27 18:15:56
我对c#中的线程有疑问。参见下面发布的代码。
public class TestThreading
{
private System.Object lockThis = new System.Object();
public void Function1()
{
lock (lockThis)
{
// Access thread-sensitive resources.
}
}
public void Function2(){
lock (lockThis)
{
// Access thread-sensitive resources.
}
}
}
现在我的问题是如果一些线程进入Function1(内部锁块),同时另一个线程进入Function2会发生什么
- 线程将独立执行。
- 进入函数2的线程去等待,直到函数1线程释放锁。
- 进入函数2的线程抛出异常。
我是c#新手,所以问一些简单的基本问题。
进入函数2的线程去等待,直到函数1线程释放锁。
锁的目的是:提供一个"安全"的代码区域,一次只能被一个线程访问。另一个线程将被置于睡眠状态,并在第一个线程释放锁时恢复。
第二件事将会发生。第二个线程将在执行之前等待锁被释放。
第二个线程将等待第一个线程释放锁,然后它将获得锁并执行您的代码
我建议阅读以下描述多线程问题和库的文章
托管线程最佳实践
c#中的线程约瑟夫Albahari