Cocos2d-x目前仍然是一个单线程的游戏引擎,使我们几乎不需要考虑游戏对象更新的线程安全性。然而,我们仍然需要关注一些情形,如网络请求、异步加载文件或者异步处理一些逻辑算法等。
在主线程中执行异步处理
其他线程有一些方法必须在主线程中执行,如GL相关的方法。另一些时候,为了保证Ref对象引用计数的线程安全,我们也应该在主线程中执行这些操作。
Cocos提供了该方法就是performFunctionInCocosThread()
。
通过这样的机制,我们就可以将一个方法转移到主线程中执行。这里需要注意的是,这些方法在主线程中被执行的时机是所有系统或自定义的schedule之后,即在UI树遍历之前。
异步加载
如果同一时间有多个计算量很大的方法需要在主线程中执行,则会影响绘制的性能。将这种处理分布到多帧的思路,减少了对主线程绘制性能的影响。