GCD的基础概念
来源:互联网 发布:华为手机usb共享网络 编辑:程序博客网 时间:2024/05/24 04:20
前些天因为一个并发线程的的bug和同事讨论了下GCD,发现他们都会用,但是说到具体原理和细节,发现他们并不清楚,所以普及一下基础概念。
我们先要了解两个东西,一个是队列,一个是线程池
dispatch_async(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)异步
dispatch_sync(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)同步
第一个参数 就是要从线程池取出的线程
第二个参数 就是从队列中所取出的任务
GCD的同步方法是不会从线程池中拿取线程,所以不论我们使用串行队列还是并行队列的任务都只在主线程上执行
异步方法,是会从线程池中拿取线程,如果是串行队列,那么只会拿取一条线程,并在这一条子线程上逐一执行任务,若果是并行队列,就会拿去多条线程,队列里的任务,并发在个个线程上执行,(并发不代表同时,五个流水线都可以加工产品叫做并发),至于谁先执行要看cup的调度。
希望这些可以帮助对gcd概念不清楚的朋友解惑,gcd是通过队列调度线程,而不是线程
阅读全文
0 0
- GCD的基础概念
- GCD的多线程基础
- GCD概念
- 工作流的基础概念
- arm的基础概念
- VHDL的基础概念
- 。net的基础概念
- scjp的基础概念
- ECMAScript的基础概念
- AOP的基础概念
- AOP的基础概念
- 网络的基础概念:
- Openlayers3的基础概念
- Unity3D的基础概念
- Cookie的基础概念
- 晶体管的基础概念
- 基础的名词概念
- 排序的基础概念
- 观察者模式
- 图论之拓扑排序基础
- 174. Dungeon Game
- RecyclerView设置背景图片长宽一样(以GridLayoutManager为例)
- hystrix构建高可用服务架构
- GCD的基础概念
- unity中通过射线用Button控制ui的出现
- css的初始化
- Ubuntu16.04下编译打包运行MapReduce Hadoop3.0.0-alpha4
- hibernate 查询语句中提示: “xxx”列无效
- 适配器与外观模式
- 4.1(2)
- 继承
- 错误[error] 1366 解决方法