GCD-Grand Central Dispatch

GCD概念:

将任务添加到队列,并指定执行任务的函数

什么是GCD?

全称是 Grand Central Dispatch;
纯C语言,提供了非常多强大的函数.

GCD的优势:

  • GCD是苹果公司为多核的并行运算提出的解决方法;
  • GCD会自动利用更多的CPU内核(比如双核,四核);
  • GCD会自动管理线程的生命周期(创建线程,调度任务,销毁线程);
  • 程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码.

GCD函数和队列:

GCD函数:

  • 任务使用block封装;
  • 任务的block没有参数也没有返回值;
  • 异步'dispatch_async':
    • 不用等待当前语句执行完毕,就可以执行下一条语句;
    • 异步是多线程的代名词.
  • 同步'dispatch_sync':
    • 必须等待当前语句执行完毕,才会执行下一条语句;
    • 不会开启线程;
    • 在当前执行block的任务
// 最基础的写法
// 1. 创建任务block
  dispatch_block_t block = ^{
        NSLog(@"hello GCD");
    };
    //2.创建队列(NULL默认代表串行队列)
    dispatch_queue_t queue = dispatch_queue_create("com.lg.cn", NULL);
    // 异步执行函数
    dispatch_async(queue, block);

队列:

队列

  • 同步函数串行队列:

    • 不会开启线程,在当前线程执行任务;
    • 任务串行执行,任务一个接着一个执行;
    • 会产生堵塞.
  • 同步函数并发队列:

    • 不会开启线程,在当前线程执行任务;
    • 任务一个接着一个执行.
  • 异步函数串行队列:

    • 开启线程;
    • 任务一个接着一个执行.
  • 异步函数并发队列:

    • 开启线程,在当前线程执行任务
    • 任务异步执行

你可能感兴趣的:(GCD-Grand Central Dispatch)