Multithreading cocos2d最佳实践,多线程与调度程序

Multithreading cocos2d最佳实践,多线程与调度程序,multithreading,performance,cocos2d-iphone,scheduler,Multithreading,Performance,Cocos2d Iphone,Scheduler,这方面的示例代码不多。我正在写一个游戏循环,我遇到了一个障碍。起初,我试图为循环创建一个时间表,因为这被列在最佳实践下,作为应该做的方式。我的帧速率是60 fps,循环也以60 fps的间隔运行。但是,我很快注意到,间隔时间只不过是一个建议,函数更新的实际速率非常不稳定,介于15到65 fps之间。这导致了对象更新的跳跃,即使它们的更新距离是时间的函数。一旦更新速度降到20 fps以下,它在更新时就变得非常明显,非常难看 然后我尝试创建自己的线程,以便更严格地控制更新率。通过这种方法,我几乎可以

这方面的示例代码不多。我正在写一个游戏循环,我遇到了一个障碍。起初,我试图为循环创建一个时间表,因为这被列在最佳实践下,作为应该做的方式。我的帧速率是60 fps,循环也以60 fps的间隔运行。但是,我很快注意到,间隔时间只不过是一个建议,函数更新的实际速率非常不稳定,介于15到65 fps之间。这导致了对象更新的跳跃,即使它们的更新距离是时间的函数。一旦更新速度降到20 fps以下,它在更新时就变得非常明显,非常难看

然后我尝试创建自己的线程,以便更严格地控制更新率。通过这种方法,我几乎可以精确地调节我的更新率。所有的动作和动画都是平滑的。这种方法的问题是cocos2d显然不支持多线程,因为我经常看到屏幕撕裂。此外,如果我的更新率与我的绘制率不完全匹配,我会看到跳跃。我相信这是因为在我的更新循环中间绘制的绘制方法是一个常见的多线程问题。
我能想到的解决这个问题的两种方法是找到某种方法来密切调节调度程序的触发频率,或者找到一种方法来锁定绘图代码,直到我可以完成更新。我一直在寻找关于如何做这两个方面的例子,但都没有成功。如果有人对如何处理这种情况有更清楚的想法,我会非常感激一些建议。我太习惯C++了,事情按我告诉他们的速度发生。如果你需要我发布任何额外的信息,尽管问!提前感谢您的帮助。

您的问题出在预定的功能中。它不能像你想的那样跑得快。尝试从cocos2d运行helloWorld场景,您会注意到fps在60 59.8-60.2附近是稳定的

无论我要求调度程序以什么速率运行,即使低至20 fps,它仍然非常不稳定。我不确定cocos2d使用什么来管理它的刷新,因为我想我可以使用相同的方法