关于死锁这个问题,其实在面试当中已经是被问了很多次了,(到目前为止应该是3次),每次问到的时候都说的不是很满意,虽然都没有怎么说错,但也没有让面试官非常满意,确实也是因为在实际的编程当中没有怎么遇到死锁的情况。今天状态恢复,又把现代操作系统的书重新翻出来把死锁这一节又详细的看了一看。
面试的时候如果问道死锁,这一般就是第一个问题。
说的简单一点,就是进程(线程)之间互相等待,都不能执行。具体来说,死锁有下面4个条件:
其实并没有特别好的方法,主要有以下几种策略
除了上面的这些方法,还有其他一些特定的方法,比如二阶段上锁,先对所有的需要的资源进行加锁,如果这一步无法完成,就把已经加的锁全部释放掉,然后重新尝试加锁,这种方法在数据库当中使用的比较多。在一次面试当中,我也答出了这一点,但是面试官似乎不是很以为然。