2010-12-20 34 views

回答

0

死锁发生的频率与使用同步程序编写多线程程序时一样多,而且您不知道自己在做什么。

例如,在将线程置于等待状态之前,只要需要相同的互斥体来唤醒该线程,就必须释放互斥锁,这只是一个小例子。

+0

可以给一个实际的例子应用程序发生死锁吗? – pappa 2011-01-11 12:21:04

+0

只要有2个代码在2个线程中运行的应用程序使用相同的互斥体和另一个机制,也许是一个信号量(保持简单)。等待信号量而不释放互斥量,就会发生死锁。 – 2011-01-13 22:42:34

0

我在问同样的问题。我在我的教科书中发现了这个问题:

费用是一个重要的考虑因素。忽略死锁的可能性是 比其他方法便宜。由于在很多系统中,很少发生死锁(比如说,每年一次),其他方法的额外花费似乎不值得。

它还提到,如果它发生,系统可能会慢一点,最终需要重新启动。我们都熟悉的东西。 教科书引用来自Brian,W.'s Operating System Basics的第323页。

但是正如Joao所说,开发人员需要生成高质量的代码。所以我想在理论上,如果你运行了很多垃圾程序,你可能会经常面对死锁。

0

用户程序的多线程进程中的死锁将使用户应用程序失去功能,这与操作系统中的死锁无关。如果内核以不正确的方式分配资源并且这种情况发生的非常少,操作系统中会发生死锁。频率是几年一次,因此Windows和Unix等流行操作系统采用鸵鸟方法来忽略死锁。