Estoy intentando causar un punto muerto en C# con fines de simulación. Solo un programa rápido.Cómo causar un punto muerto
¿Alguien podría amablemente sugerir algunas ideas para hacerlo?
Estoy intentando causar un punto muerto en C# con fines de simulación. Solo un programa rápido.Cómo causar un punto muerto
¿Alguien podría amablemente sugerir algunas ideas para hacerlo?
Algo como esto debería funcionar:
lock (A) {
lock (B) { }
}
lock (B) {
lock (A) { }
}
+1 gran ejemplo. Me he quemado los dedos con eso. –
class Program
{
static object _locker1 = new object();
static object _locker2 = new object();
static void Main(string[] args)
{
Thread first = new Thread(FirstThread);
first.Start();
Thread second = new Thread(SecondThread);
second.Start();
}
static void FirstThread(object obj)
{
// Lock resource 1
lock(_locker1)
{
Console.WriteLine("Thread 1: locked resource 1");
try
{
Thread.Sleep(50);
}
catch (ThreadInterruptedException e) {}
lock(_locker2)
{
Console.WriteLine("Thread 1: locked resource 2");
}
}
}
static void SecondThread(object obj)
{
// Lock resource 1
lock (_locker2)
{
Console.WriteLine("Thread 2: locked resource 2");
try
{
Thread.Sleep(50);
}
catch (ThreadInterruptedException e) { }
lock (_locker1)
{
Console.WriteLine("Thread 2: locked resource 1");
}
}
}
}
créditos a: http://www.java-forums.org/java-lang/7346-how-create-simple-deadlock.html
ver este http: // stackoverflow.com/questions/2543140/deadlock- sample-in-net – GustyWind
Vea el ejemplo aquí: http://stackoverflow.com/a/2411456/441574 – Brissles