在我上大学的时候,我记得我的一本教科书有专门的术语来区分这两种不同的 API 范例,但是,就我的一生而言,我不记得它在哪本书中,而谷歌也没有帮助。
像 Win32、Xlib 和 SDL 这样的 API,您位于调用堆栈的顶部,必须编写自己的主循环并负责使用
GetMessage
、XNextEvent
或SDL_PollEvent
.(这种设计需要更多技巧,但可以最大限度地控制编写游戏引擎或需要在 Win32 的 Win16 祖先设计的 80286 CPU 上运行的资源受限应用程序。)
像 Qt、GTK、wxWidgets、Fltk、Swing、Tk 等 API,您可以在其中执行一些初始化、连接事件处理程序,并且框架为您提供事件循环,方法是生成后台线程或要求您明确地将控制权转移到框架。(例如
QApplication.exec()
,gtk_main()
,IMPLEMENT_APP(wxAppSubclass)
,Fl::run()
等)
有谁知道我很难记住哪两个术语?
请记住,这不是即时模式与保留模式。可能有一个保留模式应用程序,您仍然必须自己泵送事件循环,或者有一个即时模式应用程序,您可以在从平台提供的主循环分派的回调中进行绘图。