阻塞和死鎖

2022-03-01 14:17:57 字數 388 閱讀 2042

阻塞和死鎖是兩個不同的概念。

舉個例子,現在有執行緒1和執行緒2,執行緒1占用了資源a,執行緒2占用了資源b。此時執行緒2需要使用資源a才能繼續,但是資源a被執行緒1所占用,那麼執行緒2只能等待資源a被執行緒1釋放掉,這種情況稱為執行緒2被阻塞。

但是,如果此時執行緒1也許要資源b才能繼續,那麼兩個執行緒都會等待對方釋放資源,這種情況就是死鎖。

簡單地講,阻塞一般是沒有迴圈呼叫的,而死鎖是有迴圈呼叫情況的。

以下一些內容供您參考:

了解和解決 sql server 7.0 或 2000 阻塞問題

阻塞是沒有辦法避免的,只要有併發的任務執行,就有可能發生這個現象。

死鎖是我們應該重點避免的,主要的方法就是在編寫程式的時候盡量考慮使用各種方法避免迴圈呼叫,同時設定乙個最長等待時間。

處理鎖 阻塞和死鎖(2) 偵測阻塞和阻塞查詢

如果乙個事務正在等待一些給其他事務鎖定的資源。這個事務就被成為 被阻塞的事務 反過來,引起阻塞的事務,也就是鎖定資源並造成其他事務等待的事務叫做 正在阻塞的事務 長時間執行事務會阻塞其他事務和查詢,使他們等待長時間。在繁重的系統中,很多時候我們會遇到阻塞問題,如果乙個事務因為阻塞未完成。會造成一些列...

sqlserver死鎖阻塞

create proc p lockinfo kill lock spid bit 1,是否殺掉死鎖的程序,1 殺掉,0 僅顯示 show spid if nolock bit 1 如果沒有死鎖的程序,是否顯示正常程序資訊,1 顯示,0 不顯示 as declare count int,s nvar...

資料庫阻塞和死鎖

資料庫阻塞和死鎖在程式開發過程經常出現,怎麼樣避免呢?下面通過demo簡單模擬下,資料庫發生阻塞和死鎖的現象 一 資料庫阻塞 資料庫阻塞的現象 第乙個連線占有資源沒有釋放,而第二個連線需要獲取這個資源。如果第乙個連線沒有提交或者回滾,第二個連線會一直等待下去,直到第乙個連線釋放該資源為止。對於阻塞,...