我对 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(在锁 block 内)并且同时另一个线程进入 Function2 会发生什么
- 线程将独立执行。
- 进入 Function 2 的线程 Goes to wait until lock is release by Funtion1 thread.
- 进入函数2的线程抛出异常。
我是 c# 的新手,因此问了一些简单的基本问题。 提前致谢。
最佳答案
进入Function 2的线程Goes等待,直到Funtion1线程释放锁。
锁的目的只是:提供一个“安全”的代码区域,一次只能由一个线程访问。另一个线程将进入休眠状态,并在第一个线程释放锁时恢复。
关于c# synchronization 锁的行为方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811191/