最近我注意到,在游戏更新循环中,函数在另一个更新循环之前不会完全运行。例如:
void update()
{
function 1;
function 2;
}
在函数1或函数2完全运行之前,将调用另一个更新循环。是这样吗?因为我一直认为它不会再次循环,直到函数的结束已经运行。因为我从来没有教过这个,直到最近从来没有看过这个,我从来没有在脑海中编码。我觉得这很奇怪,因为现在看来,如果我想在每一帧上运行一段代码,我必须把代码放在更新循环中。如
void update()
{
int i = 0;
int j - 0;
etc //the contents of function a
}
我的问题是,这肯定会停止多态性和封装?就像我创建一个函数,而不是重复一段代码。
我是正确的,如果是,为什么?
如前所述,我不确定您正在使用的编程语言。
-
但是,您正在处理可重入/不可重入的情况。当信号发出时,当前流将被"扣留",对信号的操作将被调用(将其读取为中断)。如果信号的动作是调用同一个函数(在你的例子中是update函数),那么你可以有- hold的效果,并在同一个线程中再次调用。
-
另一种可能性是如果你的系统是多线程的。然后可以保留当前线程的执行路径,并且可以调用任何其他线程的执行。这反过来又可以再次调用更新函数。
这两个是非常著名的计算机科学基础概念,它们被称为函数的可重入性和线程安全性。这本书(APIU)对我个人来说是一本了不起的书——试着去买一本。