ios GCD概述

作者: Dayu大鱼 | 来源:发表于2016-07-19 09:53 被阅读43次

GCD

容易混淆的术语

  • 同步/异步/并发/串行

同步和异步: 决定要不要开启新的线程

- 同步: 在当前线程中执行任务,不具备开启新线程的能力

- 异步: 在新的线程中执行任务,具备开启新线程能力

并发与串行 决定了任务的执行方式

- 并发:多个任务可以同时执行
- 串行: 一个任务结束后才可以进行下一个任务

无论是同步或者异步 只要是在串行队列中的任务 ,就必须等待上一个任务完成之后才可以执行

- 串行队列
    - 使用dispatch_queue_create 函数创建串行队列
    - dispatch_queue_create(const char*label , dispatch_queue_attr_t,attr);
        - 参数1: label:队列名称
        -参数2:attr:队列的属性 dispatch_queue_serial 


- 并发队列
    - 先进先出的方法,并发调度队列中的任务执行,再调度后续任务
    - 当前调度如果是同步执行的,会等待任务执行完毕后再调度后续的
    - 如果调度室异步执行的,同时底层线程池有可用的线程资源,会再新的线程调度后续任务的执行

主要是记得 同步和异步的区别,即使是并行或者串行 但是如果不是异步或者同步也满足条件 是不能根据两项中的一个来确定任务的调度和执行的方式的

同步任务和异步任务的使用:

登录qq之后刷新联系人头像和个性签名等信息

GCD默认的提供全局并发队列(建议使用这个)

  • 全局队列(没有名称)
    日常开发建议使用全局队列
  • 并发队列(有名称)和NSthresd的name作用类似

延时执行

ios常见的延时执行方式:2种

1.调用NSObject

[self performSelector:@selector(run) withObject:nil afterDelay:2.0];
//2秒后再调用self的run方法

2.使用GCD函数

dispatch_after(dispatch_time (DISPATCH_TIME_NOW ,(int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    // 2秒后异步执行这里的代码... 
});

单利模式

  • 单利的作用:
    • 保证一个类在整个程序运行过程中,只有一个实例,而且该实例易于供外界访问 ----方便的控制了实例个数 节约系统资源
  • 使用场合:
    • 整个应用程序中,共享一分资源(这个资源只需要创建并初始化一次)

相关文章

网友评论

    本文标题:ios GCD概述

    本文链接:https://www.haomeiwen.com/subject/oqemjttx.html