在C#中线程死锁的例子 [英] Thread deadlock example in C#

查看:625
本文介绍了在C#中线程死锁的例子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能给出怎样线程死锁可以在C#语言引起的一个例子吗?


解决方案

 静态对象object1 =新的对象(); 
静态对象Object2的=新的对象();

公共静态无效ObliviousFunction()
{
锁(object1)
{
Thread.sleep代码(1000); //等待盲人带领
锁(Object2的)
{
}
}
}

公共静态无效BlindFunction()
{
锁(Object2的)
{
Thread.sleep代码(1000); //等待遗忘
锁(object1)
{
}
}
}

静态无效的主要()
{
线程线程1 =新主题((的ThreadStart)ObliviousFunction);
螺纹therad2 =新主题((的ThreadStart)BlindFunction);

thread1.Start();
thread2.Start();

,而(真)
{
//盯着死锁两个线程。
}
}


Can someone give an example of how thread deadlock can be caused in the C# language?

解决方案

static object object1 = new object();
static object object2 = new object();

public static void ObliviousFunction()
{
    lock (object1)
    {
        Thread.Sleep(1000); // Wait for the blind to lead
        lock (object2)
        {
        }
    }
}

public static void BlindFunction()
{
    lock (object2)
    {
        Thread.Sleep(1000); // Wait for oblivion
        lock (object1)
        {
        }
    }
}

static void Main()
{
    Thread thread1 = new Thread((ThreadStart)ObliviousFunction);
    Thread therad2 = new Thread((ThreadStart)BlindFunction);

    thread1.Start();
    thread2.Start();

    while (true)
    {
        // Stare at the two threads in deadlock.
    }
}

这篇关于在C#中线程死锁的例子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆