线程
Texture
是对资源的高效利用来给用户提供高帧速的体验。换言之,科学的在线程间分配工作,使默认的runLoop保持精简,实时允许用户的输入事件,并且消耗主队列上安排的工作
遵循以下规定:
- 使用UIKit API必须通过
dispatch_get_main_queue()
或者使用ASPerformBlockOnMainThread()
在主线程执行 - 一般来说 其它任何事情都应该在后台发生
Run Loop、Threads and Queues
ASMainSerialQueue
ASMainSerialQueue
确保在不中断的情况下在主线程执行工作,其主要区别是,使用dispatch_async(dispatch_get_main_queue, block)
会在块的执行之间中断。
因此接口将在主线程中的队列中执行所有可能操作,然后再将控制权转移给OS
此接口会调用ASPerformBlockOnMainThread
。当其他线程pop block在主线程执行时,该接口就会锁定其他线程,确保其在主调度队列和runloop的其它循环之前
并且由于是同步机制,ASMainSerialQueue
是串行的,因此可以确保按照顺序执行。一个示例是将以下块排队: 更改视图属性->触发布局更新->动画。 由于ASMainSerialQueue可能会较早执行,因此要比使用dispatch_async(dispatch_get_main_queue())
发送的块较早执行。
这实际上只是主调度队列的缓冲区,为计划工作提供了更多可见性。该接口确保计划的所有内容都将在主线程以同一操作顺兴进行