當前位置:成語大全網 - 書法字典 - IOS訪問(多線程)-鎖定

IOS訪問(多線程)-鎖定

主管面試主題收集地址

基本鎖:自旋鎖、互斥鎖、讀寫鎖,其他如條件鎖、遞歸鎖、信號量都是上層封裝實現的。

鎖的性能從高到低是:

OSSpinLock >

Dispatch_semaphone(信號量)>;

Pthread_mutex(互斥)>;

NSLock(互斥鎖) >

NSCondition(條件鎖) >

Pthread_mutex(遞歸互斥遞歸鎖)>;

NSRecursiveLock >:

NSConditionLock >

同步(互斥)

將出現死鎖。

使用NSLock鎖定臨界區,進入方法2,再次鎖定同壹個鎖,會因為重入導致死鎖。

采用遞歸鎖來解決問題,利用了它的重入特性:壹個線程可以添加N個鎖,不會造成死鎖。

調度信號量的三種關鍵方法

所以可以看出,信號量壹般處理鎖定(互斥)、異步返回、控制線程並發。

關註多線程並發安全性。下面的例子都是基於總共20張票,賣出10張票。我們來模擬壹下:

可見數據其實是混亂的。

然後我們必須添加互斥鎖來確保線程安全,如下所示

可見數據正常,方法也可以。

這裏有另壹個解決方案,信號量處理。信號量的優勢看問題2鎖的性能,包括dispatch _ semaphone >;NSLock(互斥鎖)而且由於這個問題的數據量比較小,如果同步操作比較復雜,還是用信號量比較好,所以我們用信號量來保證離線過程的安全。