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

首頁 > 系統 > iOS > 正文

iOS中的多線程如何按設定順序去執行任務詳解

2019-10-21 18:43:14
字體:
來源:轉載
供稿:網友

多線程概述

對于ios系統中的某個App來講,是單進程多線程方式來工作。一般來說,使用多線程的好處是可以把程序分成相對獨立的幾個模塊,可以有效的防止某個模塊堵塞的時候導致整個程序卡死;還有就是提高運行效率,現在CPU都是多核,多個核可以同時跑,可以同時執行多條線程。

經常有這樣的需求:

1,有m個網絡請求。

2,先并發執行其中n幾個。

3,待這n個請求完成之后再執行第n+1個請求。

4然后等 第n+1個請求完成后再并發執行剩下的m-(n+1)個請求。

如果我們用GCD,可以使用dispatcg_barrier_async 來實現,如下:

ios,多線程順序執行,多線程的執行順序,ios多線程

注意這里的queue 不能是 global_queue

注意:看圖片中注釋的哪一行代碼,dispatch_global 跟 dispatch_barrier 結合起來是起不到barrier 的作用的,查閱dispatch_barrier的開發者文檔我們發現如下一段描述:


ios,多線程順序執行,多線程的執行順序,ios多線程

意思是我們傳入的queue 需要時使用dispatch_queue_create創建出來的,如果我們傳的queue是 串行或 global,那這個方法的行為就跟 dispatch_sync差不多了,如果你對 dispatch_sync(同步執行) 不甚了解,沒關系,你只需要知道,barrier 執行的不再是我們預想的順序了,dispatch_sync 的一個特點是,放進去任務就開始執行。

如果我們用NSOpeartion,可以使用addDenpency 來實現,如下:

ios,多線程順序執行,多線程的執行順序,ios多線程

ios,多線程順序執行,多線程的執行順序,ios多線程

可以看到這種方法雖然實現了設定順序,但是并不優雅。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿图什市| 瑞金市| 辽宁省| 中牟县| 夏邑县| 嫩江县| 蓬安县| 宿松县| 永宁县| 栾城县| 青州市| 石门县| 万盛区| 临沭县| 寿光市| 贵溪市| 福泉市| 宣威市| 文水县| 抚顺市| 刚察县| 怀安县| 健康| 宁津县| 珠海市| 澎湖县| 永嘉县| 贵州省| 平安县| 禄丰县| 南宁市| 永宁县| 晋江市| 张家界市| 右玉县| 宿松县| 肇庆市| 定西市| 忻州市| 尚义县| 永登县|