溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS中處理多線程的方式.

發(fā)布時間:2020-07-14 21:13:23 來源:網絡 閱讀:489 作者:小龍11911 欄目:移動開發(fā)
  1. NSObject提供的處理多線程的方法.

  2. NSThread: 創(chuàng)建一個NSThread對象就是創(chuàng)建了一個線程

    缺點: 需要手動管理線程的基本信息, 比如線程的開啟, 線程的安全等.

    優(yōu)點: 可以快速創(chuàng)建一個線程并且對線程有控制權, 很輕量級.

  3. NSOpeationQueue: 創(chuàng)建一個隊列, 把線程加入到隊列中, 在main方法中實現功能.

  4. GCD(Grand Central Dispatch 大調度中心): 獲得一個隊列, 把任務添加到隊列中, 讓隊列管理執(zhí)行的任務.

  特點: 效率高, 使用簡單.

  有兩種創(chuàng)建方式:

   (1)創(chuàng)建一個隊列

dispatch_queue_t myqueue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);

    dispatch_async(myqueue, ^{

        NSInteger a = 0;

        for (NSInteger i = 0; i < 1000000000; i++) {

            a++;

        }

    });

 (2)獲得系統(tǒng)的隊列(5個, 一個串行隊列(主隊列中包括主線程), 四個并行隊列也成全局隊列)

dispatch_queue_t mainQueue = dispatch_get_main_queue();

    // 獲取全局隊列

    dispatch_queue_t global = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    // 異步的任務分發(fā)

    dispatch_async(mainQueue, ^{

        NSLog(@"主隊列執(zhí)行!");

    });

    dispatch_async(global, ^{

        NSInteger a = 0;

        for (NSInteger i = 0; i < 1000000000; i++) {

            a++;

        }

    });

    

    // 代碼只執(zhí)行一次

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        NSLog(@"代碼只執(zhí)行一次");

    });

    

    // 讓代碼延遲執(zhí)行

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        NSLog(@"延遲幾秒執(zhí)行");

    });




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI