C#中的死锁和解决方案
- 在多任务系统下,当一个或多个进程等待系统资源,而资源又被进程本身或其它进程占用时,就形成了死锁。总的来说,就是两个线程,都需要获取对方锁占有的锁,才能够接着往下执行,但是这两个线程互不相让,你等我先释放,我也等你先释放,但谁都不肯先放,就一直在这僵持住了。
- 死锁的演示
static void Main(string[] args)
{
Task.Run(()=> Method1());
Task.Run(() => Method2());
Console.Read();
}
static void Method1()
{
lock (obj1)
{
Console.WriteLine("开始执行方法一");
Thread.Sleep(1000);
lock (obj2)