死鎖原理:多線程
多線程以及多進程改善了系統資源利用率,可是併發執行也帶來了死鎖的問題。併發
死鎖是指一組進程因競爭資源而形成的一種互相等待的僵局,每一個進程都佔有不會釋放的資源並請求其餘進程的不會釋放的資源而處於一種永久等待的狀態spa
死鎖產生的條件:線程
a、互斥條件(Mutual exclusion): 資源不能被共享,只能由一個進程使用。
b、請求與保持條件(Hold and wait): 已經獲得資源的進程能夠再次申請新的資源,並對已經得到的資源保持不放。
c、非剝奪條件(No pre-emption): 系統不能強制收回進程中已經分配的資源,只能由進程使用完本身釋放。
d、循環等待條件(Circular wait): 若干進程造成的進程環,都佔用對方申請的下一個資源。進程
避免死鎖:資源