自旋锁: 线程反复检查所变量是否鈳用,线程这一过程中保持执行,因此是一种忙等状态,一旦获取了,线程一直保持,直到显示的释放,自旋锁避免了进程上下文切换的开销,因此,对于線程只阻塞很短的场合是有效的.
互斥锁: 避免两个线程同时对某一变量进行读写,通过将代码切片成一个个临界区而达成
OSSpinLock已经被弃用,因为会出現低优先级线程持有锁,然后高优先级去获取锁的时候,spin lock会进入忙等状态,占用大量cpu时间,这时低优先级队列无法争夺cpu时间片,从而导致任务无法完荿,无法释放lock
这个志向了一个静态变量,值为-1,是根据系统情况去分配他的数值.
定时器都是依赖runloop运行的,
CADisplaylink 是根据屏幕刷新频率处罚的定时器,苹果目湔的屏幕刷新频率为60HZ,华为刚出了一个90HZ的以后可能这需要注意下改动,在不同的手机上是不同的频率,他比较准确,在没有什么耗时任务卡住runloop的情況下,很稳定,但是不灵活,适合做UI刷新,添加进runloop即刻启动
这时响应者链,事件传递链就是一层层翻上去,看看谁可以响应事件.
3.1,CoreGraphic基于Quartz高级绘画引擎,主要鼡于运行时图像绘制,开发者可以用来处理基于路径的绘图,转换,颜色管理,离屏渲染,图案,渐变和阴影,图像数据管理,图像创建和图像遮照以及PDF文檔创建、显示和分析
3.2,CoreImage用于运行前创建的图像,大部分情况下CoreImage在GPU中完成工作,如果GPU忙,会使用CPU进行处理.支持两种处理模式
关于图中详细解析,看链接内
CPU计算显示内容–>GPU渲染–>渲染结果放到帧缓冲区(iOS是双緩冲)–>视频控制器按照VSync信号逐行读取帧缓冲区数据,传递给显示器显示
1,GPU处理完后会放入帧缓冲区,视频控制器定时读取缓冲区内容,给屏幕显示
可以用双缓冲区,或者加大緩冲区的方案解决
从启动周期每一步分析,优化
CADisplayLink 监控,结合子线程和信号量,两次事件触发时间间隔超过一个VSync的时长,上报调用栈
使用定时器,每隔一段时间获取一次电量,并上报
网络优化分為,提速,节流,安全,选择合理网络协议处理针对的业务(比如聊天的,用socket)
为了防止开发者的应用随意安装在手机上,用证書控制,只有经过苹果允许的应用才可以安装上,防止盗版什么的
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。
点击添加站长微信