how to write dead lock in 1 minue
今天被提问,如何写死锁。
场面一度极其尴尬,因为我发现我竟然写不出来….
这已经是第二次发生了….
每次我都是上网看一下,觉得好简单,应该60秒就搞定,然后每次都卡壳…
好吧,仔细研究了一番的我,只好真真正正在60秒内写一次死锁了。
ps: 死锁只在多线程中发生。
using System.Collections;
using System.Collections.Generic;
using System;
using System.Threading.Tasks;
using System.Threading ;
public static class Item{
public static object obj1 = new object();
public static object obj2 = new object();
}
public class A {
void fooFirst(){
Console.WriteLine($"start foo first");
lock(Item.obj2){
Console.WriteLine($"obj2 lock");
Thread.Sleep(100);
lock(Item.obj1){
Console.WriteLine($"obj1 lock");
}
}
}
void fooSecond(){
Console.WriteLine($"start foo second");
lock(Item.obj1){
Console.WriteLine($"obj1 lock");
Thread.Sleep(100);
lock(Item.obj2){
Console.WriteLine($"obj2 lock");
}
}
}
static void Main(){
A a = new A();
var t1 = Task.Run(a.fooFirst);
var t2 = Task.Run(a.fooSecond);
t1.Wait();
t2.Wait();
}
}
