IOS 多线程的一些总结
下面简单介绍这三个方法
调用方法如下:
提个问题:如果某个ViewController里运行了一个Thread,Thread还没结束的时候,这个ViewController被Release了,结果会如何?
经过的的测试,Thread不结束,ViewController一直保留,不会执行dealloc方法。
2.NSOperation
它会自动调用TestNSOperation里的 start函数,如果需要多个NSOperation,你需要设置queue的一些属性,如果多个NSOperation之间又依赖关系,也可以设置,具体可以参考API 文档。
3.GCD
GCD很强大,我的使用经验很少。但是scorpiozj 总结的比较全面(http://www.cnblogs.com/scorpiozj/archive/2011/07/25/2116459.html)
同时,这篇文章也介绍的比较详细 http://www.cnblogs.com/vinceoniphone/archive/2011/04/07/2007968.html
官方教程
GCD是和block紧密相连的,所以最好先了解下block(可以查看这里).GCD是C level的函数,这意味着它也提供了C的函数指针作为参数,方便了C程序员.
下面首先来看GCD的使用:
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. 通常是指程序员生成的,比如:
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的框架:
dispatch_async(getDataQueue,^{//获取数据,获得一组后,刷新UI. dispatch_aysnc (mainQueue, ^{//UI的更新需在主线程中进行};})
由此可见,GCD的使用非常简单,以我的使用经验来看,以后会逐步淘汰使用NSOperation而改用GCD.
转载于:https://www.cnblogs.com/chu888chu888/archive/2011/11/21/2256711.html
IOS 多线程的一些总结相关推荐
- iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)
2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...
- iOS 多线程的四种技术方案
iOS 多线程的四种技术方案 image pthread 实现多线程操作 代码实现: void * run(void *param) {for (NSInteger i = 0; i < 100 ...
- iOS多线程开发之GCD(基础篇)
总纲: GCD基本概念 GCD如何实现 GCD如何使用 队列和任务组合 一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了⼀种新的 ...
- iOS多线程:『NSOperation、NSOperationQueue』详尽总结
2019独角兽企业重金招聘Python工程师标准>>> iOS多线程:『NSOperation.NSOperationQueue』详尽总结 转载: 原地址https://www.ji ...
- iOS多线程拾贝------操作巨人编程
iOS多线程拾贝------操作巨人编程 多线程 基本 实现方案:pthread - NSThread - GCD - NSOperation Pthread 多平台,可移植 c语言,要程序员管理生命 ...
- ios多线程开发的常用三种方式
ios多线程开发的常用三种方式 1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSe ...
- iOS 多线程:『GCD』详尽总结
原文链接:www.jianshu.com/p/2d57c7201- 感谢大家对这篇文章的喜欢和支持.为了不辜负大家的喜欢,也为了更好的让大家了解 iOS 多线程,以及 GCD 的相关知识,我对这篇文章 ...
- IOS 多线程04-GCD详解 底层并发 API
IOS 多线程04-GCD详解 底层并发 API 注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大 ...
- 多线程 循环 锁_大多数人还不清楚的iOS多线程
你不知道的的 iOS 多线程 程序员用有限的生命去追求无限的知识. 有言在先 首先我不是故意要做标题党的,也不是我要炒冷饭,我只是想换个姿势看多线程,本文大部分内容在分析如何造死锁,奈何功力尚浅,然而 ...
最新文章
- java 封装 继承 堕胎_JAVA封装、继承、多态
- E-UTRA channel bandwidths per operating band (36.101)
- 一秒钟世界上会发生多少事_1秒钟世界上会发生多少事?答案超乎你的想象……...
- php ftp 创建文件夹失败,PHP使用FTP函数创建目录
- Asp.Net WebForm生命周期的详解
- 统计学习方法笔记(李航)———第五章(决策树)
- 【impala】impala的shell命令使用
- 降序php,以降序php读取文件
- 【Java与智能设备】Ch0402 Activity的生命周期
- 使用预计算实时全局光照优化照明-优化实时光照贴图
- APP开通支付宝支付 转账功能
- 【云周刊】第121期:图管够!灌篮高手、女儿国…阿里日,这帮程序员太会玩了!...
- Ubuntu下通过命令打开图片
- 华三服务器启用cpu虚拟化,启动BIOS的虚拟化设置方法|开启CPU虚拟化支持
- 亚马逊后台付款表(Custom Transaction)详解
- 实现游戏的读档和存档
- 图形驱动程序和显卡驱动什么区别_电脑游戏显卡和专业图形显卡存在的区别
- 67 step to success
- 华擎主板的网络唤醒设置。
- 22岁对于人生的感悟