随笔分类 - 多线程
Swift中GCD的使用。
GCD(IV)
摘要:死锁:2个任务相互等待造成的。 打印结果: 分析:将NSLog3个打印分别称为:1, 2, 3. 任务2是一个同步队列,在刚刚开辟的子线程(任务1)中执行。走 2 的时候是在走任务2,因为这是一个同步队列,任务2要走就等任务1走完。任务1里面包括1, 2, 3, 3没有走完,block1没有走完,2
阅读全文
NSThread(II)
摘要:非线程安全 1 //初始化火车票数量、卖票窗口(非线程安全)、并开始卖票 2 - (void)initTicketStatusNotSave { 3 // 1. 设置剩余火车票为 50 4 self.ticketSurplusCount = 10; 5 6 // 2. 设置北京火车票售卖窗口的线程
阅读全文
NSOperation、NSOperationQueue(III)
摘要:NSOperation、NSOperationQueue 常用属性和方法归纳 NSOperation 常用属性和方法 a. 取消操作方法 //可取消操作,实质是标记 isCancelled 状态。 - (void)cancel; b. 判断操作状态方法 1 - (BOOL)isFinished; 判
阅读全文
GCD(III)
摘要:GCD 线程间的通信 在iOS开发过程中,我们一般在主线程里边进行UI刷新,例如:点击、滚动、拖拽等事件。我们通常把一些耗时的操作放在其他线程,比如说图片下载、文件上传等耗时操作。而当我们有时候在其他线程完成了耗时操作时,需要回到主线程,那么就用到了线程之间的通讯。 1 // GCD 线程间的通信
阅读全文
GCD(II)
摘要:主队列 组队列是串行队列,全局队列属于并发队列。 同步执行 + 主队列 同步执行 + 主队列在不同线程中调用结果也是不一样,在主线程中调用会出现死锁,而在其他线程中则不会。 在主线程中调用同步执行 + 主队列 互相等待卡住不可行 1 - (void)syncMain { 2 3 NSLog(@"cu
阅读全文
GCD (I)
摘要:GCD是什么?这个概念我就不说了,不会的在百度搜索框搜【GCD】 子线程开启以后占用内存512KB,Main线程开启以后占用内存1M,开销比较大。 多线程中的几个概念名词: 任务 和 队列 任务: 就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在 GCD 中是放在 block 中的。执行
阅读全文
Operation(Swift)
摘要:介绍: NSOperation需要配合NSOperationQueue来实现多线程。因为默认情况下,NSOperation单独使用时系统同步执行操作,并没有开辟新线程的能力,只有配合NSOperationQueue才能实现异步执行。 NSOperation是一个抽象类,并不具备封装操作的能力,必须使
阅读全文
多线程:Operation(二)
摘要:1. Operation 设置依赖关系 先看看如何设置operation的依赖关系。 啥叫依赖关系?有啥用啊?打个比方咱们要做一个听音乐的付费App项目,需要经过登陆、付费、下载、播放四个步骤。其实一看就明白,这四个操作是有先后顺序的,但假如所有的操作都是多线程,咱们怎么控制顺序?通过设置“优先级”
阅读全文
多线程:Operation(一)
摘要:1. 进程和线程 1.1 进程 进程:正在运行的应用程序叫进程 进程之间都是独立的,运行在专用且受保护的内存空间中 两个进程之间无法通讯 通俗的理解,手机上同时开启了两个App。这两个App肯定是在不同的进程中的。所以这两个App之间是独立的,内存中的数据不能互相窜来窜去,两个App之间也没有办法进
阅读全文
GCD(Swift)
摘要:1.取消过去的接口 说起 GCD, 大家肯定回想起类似 dispatch_async 这样的语法。 GCD 的这个语法模式无论是和 Objc 还是 Swift 的整体风格都不太打掉。 所以 Swift 3 中对它的语法进行了彻底的改写。 比如最常用的,在一个异步队列中读取数据, 然后再返回主线程更新
阅读全文
浙公网安备 33010602011771号