多个线程共用一个锁时,同一时间只有一个可获得锁执行,其他线程会阻塞进入队列,按理解事件如果是多线程的,那么每次事件触发的含lock的函数都会将进入队列等待,越排越多。需待实验证明。
public class Test
{
public void Fun1()
{
Task.Factory.StartNew(() => {
while(true)
{
Excute("线程1:");
}
});
}
public void Fun2()
{
Task.Factory.StartNew(() =>
{
while(true)
{
Excute("线程2:");
}
});
}
public void Fun3()
{
Task.Factory.StartNew(() =>
{
while (true)
{
Excute("线程3:");
}
});
}
object ob = new object();
int A = 0;
public void Excute(string id)
{
lock(ob)
{
Console.WriteLine(id+A.ToString());
Thread.Sleep(2000);
A++;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)