iOS 異步線程(冰山一角,記錄一下項目中優化使用到的方法)

隊列組(親測,可以的)
隊列組可以將很多隊列添加到一個組里,這樣做的好處是,當這個組里所有的任務都執行完了,隊列組會通過一個方法通知我們。下面是使用方法,這是一個很實用的功能。

//.創建隊列組
dispatch_group_t group = dispatch_group_create();
//2.創建隊列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_async(group, queue, ^{
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"全部完成 - %@", [NSThread currentThread]);
});

另一種:
//1.創建隊列
dispatch_queue_t uploadQueue = dispatch_queue_create("refreshDbQueue", NULL);
dispatch_queue_t getMainQueue = dispatch_get_main_queue();
dispatch_async(uploadQueue, ^{
dispatch_async(getMainQueue, ^{
});
});

使用:(第一種)
(隊列組可以將很多隊列添加到一個組里,這樣做的好處是,當這個組里所有的任務都執行完了,隊列組會通過一個方法通知我們。下面是使用方法,這是一個很實用的功能)

  • (void)test{
    //1.創建隊列組
    dispatch_group_t group = dispatch_group_create();
    //2.創建隊列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    //3.多次使用隊列組的方法執行任務, 只有異步方法
    //3.1.執行3次循環
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 3; i++) {
    NSLog(@"group-01 - %@", [NSThread currentThread]);
    }
    });

    //3.2.主隊列執行8次循環
    dispatch_group_async(group, dispatch_get_main_queue(), ^{
    for (NSInteger i = 0; i < 8; i++) {
    NSLog(@"group-02 - %@", [NSThread currentThread]);
    }
    });
    //3.3.執行5次循環
    dispatch_group_async(group, queue, ^{
    for (NSInteger i = 0; i < 5; i++) {
    NSLog(@"group-03 - %@", [NSThread currentThread]);
    }
    });
    //4.都完成后會自動通知
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    NSLog(@"全部完成 - %@", [NSThread currentThread]);
    });
    }
    第二種的使用是很普遍的,隨便一搜多了是,不再記錄!

轉自: http://www.lxweimin.com/p/0b0d9b1f1f19 希望看到更多的,請閱讀原文。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • NSThread 第一種:通過NSThread的對象方法 NSThread *thread = [[NSThrea...
    攻城獅GG閱讀 859評論 0 3
  • #import "ViewController.h" @interface ViewController () @...
    艾克12138閱讀 226評論 0 0
  • 在這篇文章中,我將為你整理一下 iOS 開發中幾種多線程方案,以及其使用方法和注意事項。當然也會給出幾種多線程的案...
    張戰威ican閱讀 616評論 0 0
  • #import "ViewController.h" @interface ViewController () @...
    艾克12138閱讀 276評論 0 0
  • 1. GCD簡介 什么是GCD呢?我們先來看看百度百科的解釋簡單了解下概念 引自百度百科:Grand Centra...
    千尋_544f閱讀 412評論 0 0