iOS:多线程
三个都是多线程相关的。
GCD 简单介绍
- iOS 和 osx 的核心内核是 XNU 内核,GCD 是基于 XNU 内核实现的
- GCD 的 API 全部的 libdispatch 中
- GCD 的底层实现主要是 Dispatch Queue 和 Dispatch Source
GCD 和 NSOperation 的区别
- GCD 是纯 C 语言的 API,NSOperation 是基于 GCD 的封装
- GCD 只支持 FIFO 队列,NSOperationQueue 可以很方便的调整队列顺序,设置最大并发数
- NSOperation 可以进行 KVO 监听线程是否正在执行,是否已经结束,是否已经取消等。
- NSOperation 可以跨队列设置依赖关系;GCD 只能设置串行队列,或者使用dispatch_barrier_async 进行控制执行顺序。
NSThread
优点:比较轻量级。
缺点:需要自己管理线程的生命周期,线程同步,加锁,睡眠以及唤醒等。线程同步对数据加锁会有一定的开销。
注意点
GCD 使用栅栏函数(dispatch_barrier_async)进行多线程异步操作时,不能使用全局的并发队列(dispatch_global_async),只能使用自己创建的并发队列(dispatch_queue_create)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了