,线程的部分功能就是实现并发,多个线程在每个线程上都可以执行小段的代码,处理器很快的在各个线程间进行切换,像是在同时运行,其实所有的 iOS 设备都还有第二个处理器,显示接口卡(GPU),与显示相关的代码都由 GPU 独立于主处理器之外运行.
主线程自动有一个运行循环(run loop),一个run loop 就是一个事件接收者,如果没有 run loop,线程就不能接收事件,你的代码通过运行循环得知它正在发生的事件, Cocoa 事件通常到达主线程的运行循环,这就是为什么由这些事件调用的代码在主线程上运行的原因.
主线程是界面线程
主线程的主要工作有以下几点
1:事件到达主线程,例如 btn按钮被点击向在主线程上你的应用程序报告 event事件
2:控制事件会导致你的代码在主线程上被调用,例如你的代码令界面发生改变,这是安全的,因为代码正在主线程上运行
3,代码完成后,主线程的运行循环可以处理更多地事件,用户可以再次进行交互,例如 btn的多次点击
特点就是
1:代码执行的非常快
2:代码运行时,会阻止用户与界面的交互.例如,在更新界面的时候如果可以进行点击操作,这是非常不合理的
框架一直都在操作辅助线程,他们通常会保持与在主线程上的代码的协调通信
例如1:动画播放期间,界面保持响应用户,并有可能运行代码,, coreAnimation 框架负责播放动画,后台线程上更新显示的层,但你的代理方法或完成处理块儿在主线程调用
2:UIWebView的提取和加载是异步的
3:声音是异步播放的;
4:保存下载图片也应该是异步的
时间: 2024-11-04 21:12:09