C++ 如果时间阈值低于一定的毫秒数,则不会执行glutTimerFunc()回调函数

C++ 如果时间阈值低于一定的毫秒数,则不会执行glutTimerFunc()回调函数,c++,callback,glut,C++,Callback,Glut,我使用的应用程序要求GLUT GUI使用GLUTIMERFUNC在尽可能短的时间内执行引擎: void SetGLUTTimer(void); void callback(int value) { Engine* pEngine; pEngine = (Engine*) value; pEngine->Process(); pEngine->SetGLUTTimer(); } void Engine::SetGLUTTimer(void) {

我使用的应用程序要求GLUT GUI使用GLUTIMERFUNC在尽可能短的时间内执行引擎:

void SetGLUTTimer(void);

void callback(int value)
{
    Engine* pEngine;
    pEngine = (Engine*) value;
    pEngine->Process();

    pEngine->SetGLUTTimer();
}

void Engine::SetGLUTTimer(void)
{
    glutTimerFunc(50, callback, (int)this);
}

bool Engine::Run(void)
{
    if (m_pViewer != NULL)
        m_pViewer->Run();
    else
        return false;

    return true;
}

如果我将时间阈值设置为1000毫秒或更高,则会定期调用引擎回调,而任何低于一秒的其他间隔(如上例所示)都会导致GUI无限期运行,而不会执行引擎进程函数。

代码中可能存在未定义的行为。想一想如果指针不能放入int中会发生什么情况?你是对的,我会想另一种方法来管理指针,但这不是问题背后的原因,因为如果我将时间阈值设置在秒以上,计时器可以与回调一起正常工作。