iOS線程安全

在GCD出現(xiàn)之前,有兩種方法

第一種是采用內置的“同步塊”(synchronization block)

Snip20160726_1.png
Snip20160726_2.png

第二種是直接使用NSLock

Snip20160726_3.png
Snip20160726_5.png

上面兩種方法都很好,不過有缺陷。在極端情況下,同步塊會導致死鎖,效率也不高。

替代方法就是GCD,它能以簡單,高效的形式為代碼加鎖

1.可以這樣做,使用“串行同步隊列”,將讀取操作與寫入操作都放在同一個隊列里面,既可以保證數(shù)據(jù)同步

Snip20160726_12.png
Snip20160726_13.png

2.最好的做法 利用并發(fā)隊列和柵欄 。(獲取方法可以并發(fā)執(zhí)行,保證設置方法和獲取方法不能并發(fā)執(zhí)行,就可以保證數(shù)據(jù)安全)

Snip20160726_14.png
Snip20160726_19.png
Snip20160726_20.png
Snip20160726_21.png
Snip20160726_18.png

--摘自 編寫高質量oc52個有效方法-41條
不錯的書~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 多線程的安全隱患 當多個線程訪問同一塊資源時,很容易引發(fā)數(shù)據(jù)錯亂和數(shù)據(jù)安全問題 安全隱患解決 方案一:使用“同步塊...
    AYuan_閱讀 781評論 0 3
  • 41.多用派發(fā)隊列,少用同步鎖 在Objective-C中,如果有多個線程要執(zhí)行同一份代碼,那么有時可能會出問題。...
    Code_Ninja閱讀 1,251評論 1 13
  • UIKit是線程不安全的 UIKit是線程不安全的,并且這是蘋果有意的設計,主要是為了提升性能。具體原因,下面這篇...
    松哥888閱讀 1,875評論 2 7
  • iOS線程安全的鎖與性能對比 一、鎖的基本使用方法 1.1、@synchronized 這是我們最熟悉的枷鎖方式,...
    Jacky_Yang閱讀 2,371評論 0 17
  • 第 23 條:通過委托與數(shù)據(jù)源協(xié)議進行對象間通信 Objective-C 可以使用 “委托模式”(Delegate...
    德山_閱讀 920評論 0 2

友情鏈接更多精彩內容