zoukankan      html  css  js  c++  java
  • GCD基本知识

    1、纯C语言,提供了非常多的强大的函数。

    2、GCD的核心:

            将任务添加到队列。(任务:执行什么操作。队列:用来存放任务,特点是先进先出)

    3、GCD的使用步骤:

            -->创建任务(即确定要做的事情)。GCD中的任务是用block封装的。

            -->将任务添加到队列中

                    >GCD会自动将队列中的任务取出,放到对应的线程中执行。

                    >任务从队列中取出原则:先进先出。

    示例代码:

     1     // 1、创建队列
     2     // dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
     3     
     4     // 2、创建任务:用Block指定(无参无返回值)
     5     // void(^task)() = ^{
     6     //    NSLog(@"%@",[NSThread currentThread]);
     7     // };
     8     
     9     // 3、将任务添加到队列
    10     // dispatch_async:表示任务是异步的
    11     // dispatch_sync:表示任务是同步的
    12     // dispatch_async(queue, task);
    13     
    14     // 简写方式:
    15     dispatch_async(dispatch_get_global_queue(0,0), ^{
    16         NSLog(@"%@",[NSThread currentThread]);
    17     });

    GCD执行任务的2个函数:

    1 // 同步的方式执行任务,在当前线程中依次执行任务
    2 dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
    3 
    4 // 异步的方式执行任务,会开辟新线程,在新线程中执行任务
    5 dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

    GCD的2种队列类型:

    队列:就是用来存放任务的,特点是先进先出。

    1、串行队列:让任务一个接着一个的有序执行,不管队列里面放的是什么任务,都是一个任务执行完毕后,再执行下一个任务。

    2、并行队列(又叫并发队列):

      2.1>可以让多个任务“并发/同时”执行,自动开启多个线程同时执行多个任务

      2.2>同时可以调度多个任务执行

      2.3>并发队列的并发功能只有内部的任务是异步任务时,才有效。

  • 相关阅读:
    《Linux设备驱动开发详解(第3版)》(即《Linux设备驱动开发详解:基于最新的Linux 4.0内核》)--宋宝华
    WebApp 安全风险与防护课堂开课了!
    2019 Vue开发指南:你都需要学点啥?
    每个程序员都该学习的5种开发语言
    每个Web开发者都该了解的12条命令行
    Webpack 4教程
    都 9012了,该选择 Angular、React,还是Vue?
    在 Angular 8 中,我们可以期待些什么
    “宇宙最强” IDE,Visual Studio 2019 正式发布
    Webpack 4教程
  • 原文地址:https://www.cnblogs.com/panda1024/p/6265997.html
Copyright © 2011-2022 走看看