NSLock死鎖及解決辦法
代碼如下:

輸出結(jié)果:1
這就照成了死鎖
原因如下:由于當(dāng)前線程運行到第一個lock加鎖,現(xiàn)在再次運行到lock同樣的鎖,需等待當(dāng)前線程解鎖,把當(dāng)前線程掛起,不能解鎖
NSLock是非遞歸鎖,當(dāng)同一線程重復(fù)獲取同一非遞歸鎖時,就會發(fā)生死鎖
解決辦法:
我們可以用NSRecursiveLock或者@synchronized替代NSLock
因為NSRecursiveLock或者@synchronized都是遞歸鎖,
遞歸鎖:它允許同一線程多次加鎖,而不會造成死鎖。
原文:https://blog.csdn.net/qq_14927837/article/details/88868559