本文通过汇总一些网上搜集到的资料,总结死锁的概念
背景
什么是死锁,如何避免死锁?
线程A需要资源X,而线程B需要资源Y,而双方都掌握有对方所要的资源,这种情况称为死锁
死锁产生的有下列四个条件:
-
互斥(Mutual exclusion):一个资源每次只能被一个进程使用
-
持有(Hold and wait):指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。
-
不可剥夺(No preemption):指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。