国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

總結一下iOS的并發---之GCD

2019-11-09 13:47:43
字體:
來源:轉載
供稿:網友

原創總結,干貨,有誤歡迎指正,轉載請注明出處,謝謝。

1.  iOS多任務用啥好?

兩大利器:GCD與NSOperation

2. 為啥用這兩個東西,不直接用NSThread?

1)使我們更專注于實現功能,把tasks扔到Dispatch Queue,或者Operation Queue里,讓它們負責開辟回收線程,處理線程同步問題

2)   提供了解決 Race Condition, PRiority reverse 的能力。 ------- 有三個問題:共享資源訪問,優先級反轉,死鎖。

3)使用block,方便。

4)   提供控制task執行的方法(暫停取消任務,獲取任務狀態,得到任務&所有任務完成的反饋); 多個task可以設定依賴關系,按順序執行。

3. GCD分類

首先Dispatch Queue:  分為串行隊列,并行隊列。 也可分為系統queue,自定義queue。

1) main Queue : 串行隊列,對應這UI主線程。

2) Global Queue: 并行。

3) 自定義,默認串行,指定參數并行。

4.并行隊列有啥用?

好幾個task同時執行,快。

5. 串行隊列有啥用?

1)隊列里的tasks如果需要先后順序關系, 2)解決同步訪問資源問題 Race Condition

6. GCD Group干啥的?

把任務放到隊列里的同時也可以放到Group里,目的是可以知道所有任務都結束了。使用 Group_notify

7.Dispatch queue 的 sync / async 注意事項:

1)sync 阻塞當前線程,等待方法返回,這是和async的區別

2)不要在主線程(main queue)里調用sync ---卡住UI,感覺程序死掉了

3)   不要 currentQueue.sync , 這樣會把currentQueue阻塞了,然后還想讓它執行任務 ---- DeadLock.   當然,swift里已經不能currentQueue了。

4)queueA.sync { 這里邊別調用queueA} ---又是DeadLock.

5)sync各種不能用,哪用它做啥?? ------ 多個線程訪問共享資源的時候用 。。用 [private serial queue ].sync 實現get , 用[private serial queue ].async實現set。

 

8. 解決共享資源訪問

1)把dispatchBarrier 放到并發Queue里,先于執行的仍然并行,dispatchBarrier串行, 之后的再并行。

2)private serial queue ----私有串行隊列--- 蘋果WWDC推薦方式,不推薦用Barrier了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渭源县| 凤台县| 壶关县| 上虞市| 三门峡市| 玛纳斯县| 阿尔山市| 布拖县| 高阳县| 沙田区| 尚志市| 安阳市| 平远县| 德江县| 驻马店市| 温州市| 浑源县| 大姚县| 锦屏县| 新邵县| 石楼县| 罗江县| 调兵山市| 马尔康县| 邳州市| 营山县| 化州市| 辽阳县| 章丘市| 都安| 阳高县| 宣武区| 福海县| 同心县| 丹巴县| 云安县| 涪陵区| 天等县| 黑山县| 博湖县| 威海市|