C#应用程序演示死锁

时间:2011-12-08 11:44:36

标签: c# .net multithreading deadlock

  

可能重复:
  simple deadlock example in c#

我一直在处理我的应用程序中的多线程,目前我正在学习死锁。

我想编写一个实际导致死锁的快速应用程序,以便我可以观察到这些影响,并尝试纠正这种情况。

是否有任何情况可以保证100%的时间死锁,我可以在C#中模仿?

2 个答案:

答案 0 :(得分:3)

我没有针对此特定情况的现成代码(:

但是,你在心理代码中可以做的是:

主题1:
拿锁1 睡30秒 拿锁2 自由锁2 免费锁1

主题2:
拿锁2 睡30秒 拿锁1 自由锁1 免费锁定2

每个线程都可以在它上面运行,但是它们会一起导致死锁,它们会同时或多或少地启动

答案 1 :(得分:-1)

好吧,你可以简单地构建任何死锁情境。想象一下,线程A需要一个资源(比方说一个文件)来获取一些信息。线程使用相同的资源来存储一些信息。 B还需要A的结果来存储它。

所以,使用Timers你可以启动B,让它锁定资源或其他什么,尝试启动A等待B并让B等待A等待B ......这就是你的死锁。