ios多線程-GCD基本用法

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   使用   sp   資料   

ios中多線程有三種,NSTread, NSOperation,GCD

這篇就講講GCD的基本用法

平時比較多使用和看到的是:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{        //非同步作業代碼塊        dispatch_async(dispatch_get_main_queue(), ^{            //回到主線程作業碼塊        });    });

比較多的用於更新ui操作

比如從資料庫擷取資料需要花較長的時間,又不希望卡主線程,就把擷取資料庫資料操作放在非同步作業代碼快中,等擷取結束,回調主線程,更新ui,在主線程作業碼塊中進行操作

 

下面我們來解析一下這代碼塊中的每個方法:

dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>)表示非同步作業,與之對應的是dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>),同步操作,block中的代碼執行完了才能執行後面的操作方法中第一個參數 dispatch_queue_t queue 表示隊列,無非是兩種:串列和並行,另外可自建串列或並行隊列擷取系統串列隊列,也就是主線程串列隊列:dispatch_get_main_queue()擷取系統並行隊列:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)其中第一個參數,是隊列優先順序,有四種:#define DISPATCH_QUEUE_PRIORITY_HIGH 2#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0#define DISPATCH_QUEUE_PRIORITY_LOW (-2)#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN會根據優先順序高低,進行處理自建隊列:dispatch_queue_create("com.example.serial", NULL);第一個參數,文檔規範說:A string label to attach to the queue.這個字串需要唯一性,一般是以上形式呈現第二個參數傳NULL或者 DISPATCH_QUEUE_SERIAL 表示串列傳 DISPATCH_QUEUE_CONCURRENT表示並行當執行結束,必須要有 dispatch_release(),將隊列釋放

最近看到一篇文章講到GCD, 比較深入,還有些沒有理解,以上我描述的內容是GCD較為基礎的用法,一般程式也就用到這些

http://justsee.iteye.com/blog/1883409

感謝作者如此深入的分析,受益匪淺

 

ios多線程-GCD基本用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.