下面首先来看GCD的使用:
1
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
async表明异步运行,block代表的是你要做的事情,queue则是你把任务交给谁来处理了.(除了async,还有sync,delay,本文以async为例).
之所以程序中会用到多线程是因为程序往往会需要读取数据,然后更新UI.为了良好的用户体验,读取数据的操作会倾向于在后台运行,这样以避免阻塞主线程.GCD里就有三种queue来处理。
1. Main queue:
  顾名思义,运行在主线程,由dispatch_get_main_queue获得.和ui相关的就要使用Main Queue.
2.Serial quque(private dispatch queue)
  每次运行一个任务,可以添加多个,执行次序FIFO. 通常是指程序员生成的,比如:
1
2
3
4
NSDate *da = [NSDate date];
NSString *daStr = [da description];
const char *queueName = [daStr UTF8String];
dispatch_queue_t myQueue = dispatch_queue_create(queueName, NULL);
3. Concurrent queue(global dispatch queue):
可以同时运行多个任务,每个任务的启动时间是按照加入queue的顺序,结束的顺序依赖各自的任务.使用dispatch_get_global_queue获得.
所以我们可以大致了解使用GCD的框架:
1
2
3
4
5
6
7
dispatch_async(getDataQueue,^{
//获取数据,获得一组后,刷新UI.
dispatch_aysnc (mainQueue, ^{
//UI的更新需在主线程中进行
};
}
)
由此可见,GCD的使用非常简单,以我的使用经验来看,以后会逐步淘汰使用NSOperation而改用GCD。

提个问题:如果某个ViewController里运行了一个Thread,Thread还没结束的时候,这个ViewController被Release了,结果会如何?
经过的的测试,Thread不结束,ViewController一直保留,不会执行dealloc方法。

下面首先来看GCD的使用相关推荐

  1. IOS 多线程的一些总结

    IOS 多线程 有三种主要方法 (1)NSThread (2)NSOperation (3)GCD 下面简单介绍这三个方法 1.NSThread 调用方法如下: 如函数需要输入参数,可从object传 ...

  2. Chisel教程——07.详解ChiselTest

    详解ChiselTest 动机 Chisel团队给测试框架做了很多工作,ChiselTest提供了以下改进: 既可以进行单元测试也可以进行系统集成测试: 为可组合的抽象和分层设计: 高度可用,通过让单 ...

  3. 【世界数学难题】素数判定与大数因子分解问题(下)

    6.一种概率算法 缪内的结果虽然很好,但它毕竟是依赖于一个悬而未决的假设.因而在实用中,它是不能被采用的.故我们回到勒默的结果,看看从这个结果还能引伸出什么方法来. 勒默的结果说,若n是合数,则存在a ...

  4. 关于CGD的一些领悟

    GCD相对来说是一种更优雅的方式,看如下代码: NSString* parameter = [self getSomeParameter]; dispatch_async(dispatch_get_g ...

  5. 基金投资从入门到精通

    第一篇 基础知识篇 第一节      认识基金 基金投资入门系列--基础知识 1.什么是证券投资基金? 通俗地说,证券投资基金是通过汇集众多投资者的资金,交给银行保管,由专业的基金管理公司负责投资于股 ...

  6. [数论]Gcd/ExGcd欧几里得学习笔记

    \(Q\):什么是\(GCD\)? \(GCD\) \(GCD\),即最大公约数(\(Greatest\ Common\ Divisor\)) 对于两个自然数\(a,b\),定义\(GCD(a,b)\ ...

  7. 深入理解GCD之dispatch_queue

    原文链接深入理解GCD之dispatch_queue 前言 上一篇我们介绍了GCD的结构体,这一篇我们着重看一下GCD中队列的构成.队列是我们在使用GCD中经常接触的技术点. 关键点 主队列和主线程 ...

  8. GCD6: 在GCD上异步执行非UI相关任务

    讨论:在主队列.串行队列和并发队列上异步执行代码块才能见识到 GCD 的真正实力. 要在分派队列上执行异步任务,你必须使用下面这些函数中的其中一个: dispatch_async为了异步执行向分派队列 ...

  9. 关于多线程之GCD的一些学习要点

    GCD是当前多线程使用最方便的,也是使用比较多的. 学习GCD主要集中在一下几点: 一.队列,同步,异步 1.主队列:dispatch_get_main_queue(); 2.串行队列:dispatc ...

最新文章

  1. SQL Server各种日期计算方法
  2. Mac 安装多个版本jdk
  3. mysql ssl_cipher_mysql添加用户:出现Field 'ssl_cipher' doesn't have a defa
  4. 使用MySQL的LAST_INSERT_ID--转
  5. MySQL中如何通过修改表实现约束的添加与删除
  6. 工预-SQLite(weiwan)
  7. Redis:07---Redis数据结构
  8. java ee 容器_javaee中web的四大容器简介
  9. OpenShift Security 16 - 用 RHACS 为加固应用镜像安全提供线索
  10. mysql数据库学习——5,数据类型,字符集和校对
  11. python123.io能不能补交作业_作业分配问题-回溯法-Python3
  12. 解决UE4官方文档C++API查询慢问题
  13. 扫雷(简易版) 10*10
  14. 西门子伺服驱动器6SE70上电无显示故障分析
  15. 免费的NBA历史得分榜接口
  16. 泛函分析和他的基础概念
  17. Schnorr签名算法(初始化和签名)C语言实现
  18. Arduino + AD9851 DDS信号模块 频率控制字和相位控制字写入
  19. 证件识别技术,OCR扫描识别
  20. 智力题:最短时间过桥问题

热门文章

  1. 对于电单车同学们提出的改动建议
  2. 2021年春季学期-信号与系统-第四次作业参考答案-第五小题
  3. 基于STC8H1K28的BH60的角度读写模块
  4. php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法
  5. 计算机应用问题,计算机应用中存在的问题及解决
  6. GPIO代码使用流程(伪代码部分示例)
  7. gta线上服务器维护,gtaol线上云服务器
  8. top刷新间隔_每天一个linux命令:top命令
  9. android 获取活动栈,活动的生命周期系列(1)返回栈
  10. mysql 可重复读 快照_MYSQL可重复读及原理、快照读和当前读