2019独角兽企业重金招聘Python工程师标准>>>

(一)大概念

gcd:使用起来就俩概念

1.任务(你想做的事)

2.队列(存放任务)

gcd可以根据你的需要,将你的任务进行排序,来确定什么时候执行。

(二)小概念(同步异步,并发串行都是啥)

同步:在当前线程中执行

异步:在另一条线程中执行

并发:多个任务并发执行

串行:一个任务执行完毕,再执行下个任务

(三)上代码

1.任务执行方式

(1)用同步的方式执行任务(在当前线程执行当前任务)

dispatch_sync(dispatch_queue_t  _Nonnull queue, ^(void)block)   //1.队列名称   2.要执行的block(在里面写你要执行的任务)

(2)用异步的方式执行任务(开辟新线程执行当前任务)

dispatch_async(dispatch_queue_t  _Nonnull queue, ^(void)block)//1.队列名称   2.要执行的block(在里面写你要执行的任务)

2.队列的类型

(1)并发队列

GCD默认已经提供了全局的并发队列,供整个应用使用,不需要手动创建

使用dispatch_get_global_queue函数获得全局的并发队列

dispatch_queue_t dispatch_get_global_queue(dispatch_queue_priority_t priority,unsigned long flags); // 此参数暂时无用,用0即可

第一个参数是优先级 ,第二个参数是以后用的,用0就行了

说明:全局并发队列的优先级

#define DISPATCH_QUEUE_PRIORITY_HIGH 2 // 高

#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 // 默认(中)

#define DISPATCH_QUEUE_PRIORITY_LOW (-2) // 低

#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN // 后台

(2)串行队列

1.使用dispatch_queue_create函数创建串行队列

    dispatch_queue_t  dispatch_queue_create(const char *label,  dispatch_queue_attr_t attr); // 队列名称, 队列属性,一般用NULL即可

示例:

dispatch_queue_t queue = dispatch_queue_create("wendingding", NULL); // 创建dispatch_release(queue); // 非ARC需要释放手动创建的队列

2. 使用主队列

主队列是GCD自带的一种特殊的串行队列,放在主队列中的任务,都会放到主线程中执行

使用dispatch_get_main_queue()获得主队列

我觉得这张图总结的挺好的,只有在使用并发队列并且异步执行任务的情况下,所创建的任务才会并发执行

代码我也不写了,比较懒,有啥不懂的 直接问

转载于:https://my.oschina.net/u/2964974/blog/842057

iOS oc 线程 进程,同步异步,并发串行,来捋捋相关推荐

  1. 计算机网络之物理层:1、接口特性、同步异步、串行并行、双工

    物理层:1.物理层相关概念 思维导图:(学习任务) 接口特性: 数据通信基础: 设计数据通信系统要考虑的三个问题: 三种通信方式: 串行.并行传输: 同步.异步传输: 思维导图:(学习任务) 接口特性 ...

  2. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  3. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

    基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...

  4. 进程线程、同步异步、阻塞非阻塞、并发并行、多线程

    一: 进程和线程 1: 进程(Process) 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线 ...

  5. 进程线程、同步异步、阻塞非阻塞、并发并行

    一.进程和线程 1️⃣[进程Process]是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程. 进程 ...

  6. iOS GCD, 同步,异步,串行队列,并行队列,dispatch_group

    同步,指代码在同一个线程运行 异步,代码在另一个线程运行 串行队列,提交到该队列的block会顺序执行 并行队列,提交到该队列的block会并发执行 如果想等某一队列中所有block都执行完了在执行一 ...

  7. GIL , 线程池 , 同步 , 异步 , 队列 , 事件

    一.什么是GIL 官方解释: ''' In CPython, the global interpreter lock, or GIL, is a mutex that prevents multipl ...

  8. GCD 之 同步 异步 并发

    1. 1 dispatch_async(dispatch_get_global_queue(0, 0), ^{ 2 // 处理耗时操作的代码块... 3 4 //通知主线程刷新 5 dispatch_ ...

  9. 同步、异步 与 串行、并行的区别

    同步.异步: 指的是能否开启新的线程.同步不能开启新的线程,异步可以. 串行.并行: 指的是任务的执行方式.串行是指多个任务时,各个任务按顺序执行,完成一个之后才能进行下一个.并行指的是多个任务可以同 ...

最新文章

  1. 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
  2. 从0学人脸识别,我花3小时复现了Eigenfaces For Recognition
  3. 基于STM32F103双轴机械臂完整电路板设计
  4. python2 python3 中 raw_input input 区别
  5. html dvi如何设置置顶不能空白位置,[html]关于html标签的一些总结
  6. 【Android】 Android中spinner下拉列表的使用
  7. fcn网络训练代码_用FCN做分割
  8. 密码学原理与实践第三版pdf_云计算原理与实践PDF电子书下载
  9. SQL Server 与 Excel,Access 数据表的导入导出(注:参照博园.NET大观)
  10. SHA1withRSA加签名和验签名
  11. 大专php应用开发期末考试,php程序员笔试题及答案1.doc
  12. 《Linux/UNIX系统编程手册》推荐
  13. 智能小车寻迹c语言程序,智能小车循迹记时测速程序
  14. Android入门第一篇
  15. 开箱即用,这些 Vue3 后台管理系统模板绝对让你爽歪歪!
  16. 【元胞自动机】元胞自动机多车道信号交叉口仿真【含Matlab源码 818期】
  17. 【高等代数】线性空间-知识点总结
  18. 六、系统架构 - 高可用架构设计
  19. 再造STM32---第二十二部分:CAN—通讯实验
  20. 让网站加载速度更快的10种方法

热门文章

  1. JavaScript 复杂判断的更优雅写法借鉴
  2. 小甲鱼OD学习第18讲
  3. python实现的json数据以HTTP GET,POST,PUT,DELETE方式页面请求
  4. 《那些年啊,那些事——一个程序员的奋斗史》——86
  5. 【转载】Kerberos原理--经典对话
  6. Linux常用性能分析监控工具 iostat、iotop、top、htop、free、iftop
  7. VS Code 插件
  8. 浏览器弹窗怎么设置显示url_谷歌浏览器Chrome76版本地址栏不显示HTTPS和WWW怎么办?...
  9. Elasticsearch——filter过滤查询
  10. JS实现前端动态分页码