您的位置:首页 > 其它

多线程笔记

2015-11-21 19:16 197 查看
–GCD

基本思想

GCD有5个不同的队列:运行在主线程中的主队列、3个优先级不同的后台队列、1个优先级更低的后台队列。

自定义队列:并行队列 和 串行队列。在自定义队列中,被调度的所有block最终都将被放入到系统的全局队列和线程池中。

串行、同步

串行、异步

并行、同步

并行、异步

在开发中,要永远使用DISPATCH_QUEUE_PRIORITY_DEFAULT。

串行队列、异步任务是最安全的一个多线程选择。

任务嵌套时,同步任务中包含同步任务,会导致阻塞。

—-NSOperation & NSOperationQueue

从本质上看,操作队列的性能比GCD略低,不过大多数情况下这种负面影响可以忽略不计。操作队列是并发编程的首选。

(实际开发中,由于习惯的原因,一般都使用GCD而不是操作队列。)

-—多线程bloc中的self

只有self直接强引用block,才会出现循环引用。

block的管理 及 线程的创建和销毁都是个有队列负责的,直接在block中使用self是可以的。

-—多线程中的资源共享

互斥锁(@synchronized):性能消耗非常大,苹果官方不建议使用。

在实际开发中,尽量不要抢夺资源。

处于性能的考虑,UIKit中的大部分类是线程不安全的,因此,苹果官方要求,所有更新UI的操作都在主线程中执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 gcd