更新循环说明

时间:2013-04-22 12:51:38

标签: loops updates

最近我注意到在游戏更新循环中,在另一个更新循环之前,函数不会完全运行。例如:

void update()
{
function 1;
function 2;
}

在函数1或函数2完全运行之前,将调用另一个更新循环。 是这样的吗?因为我一直认为它不会再次循环,直到功能结束。 因为我从来没有被教过这个,直到最近从来没有看过这个,我从来没有考虑到这一点。 我发现这很奇怪,因为现在似乎如果我想在每个帧上运行一段代码,我必须将代码放在更新循环中。 e.g

void update()
{
int i = 0;
int j - 0;
etc //the contents of function a
}

我的问题是,这肯定会阻止多态性和封装?在我创建函数而不是重复一段代码的方式。

我是否正确,如果是,为什么?

1 个答案:

答案 0 :(得分:1)

如评论所述,我不确定您使用的编程语言。

  1. 但是,您正在处理re-entrant/non-re-entrant的情况。当发出信号时,电流将被“保持”,并且将调用对信号的动作(将其读作中断)。如果信号的动作是调用相同的函数(在你的情况下更新函数),那么你可以在同一个线程中保持并再次调用。

  2. 如果您的系统是多线程的,还有一种可能性。然后,您可以保留当前线程执行路径,并可以调用任何其他线程执行。这又可以再次调用更新功能。

  3. 这两个是非常着名的基本计算机科学概念,被称为函数的重入和线程安全性。这本book (APIU)本身就是一本了不起的书 - 试着获得它的副本。