1. 程式人生 > >單執行緒中遞迴包含lock不會死鎖

單執行緒中遞迴包含lock不會死鎖

之前一直以為,lock當進入遞迴時,遞迴裡面執行到lock (objectSyn)時會等待外層釋放,而外層lock又會等待函式呼叫結束才釋放。


後來看了《C#2.0 本質論》才知道lock只會生效於多執行緒,對於單執行緒,自身已經是鎖的所有者,並不會出現為了繼續加鎖等待原有鎖釋放

另外在多執行緒裡,公共物件被一個執行緒加鎖後另一執行緒仍可對其進行操作