我在苹果的文档和谷歌搜索的东西上读了几天关于RunLoops的文章。我在很大程度上理解了RunLoops的概念,但是对于有关RunLoops的一些基本问题,我仍然没有得到答案。
Runloop究竟是如何工作的?它是否类似于在某个系统级别上运行的时间循环?请给我一些指点。
发布于 2013-08-17 12:17:41
关于RunLoop (在其他平台上被命名为Window Handler、主循环、事件循环)的全部要点是,它为事件驱动体系结构提供了便利,在这种体系结构中,应用程序只在有需要做的事情时才运行--例如,响应用户交互。这与投票截然相反。
该体系结构的基础是某种类型的消息队列,线程可以将其阻塞,直到消息可供处理。在MacOSX和iOS系统上,队列是一个马赫核 RPC port。在Windows上,它是一个内核IPC队列,以及系统、unix域或网络套接字.
事件由其他系统组件(例如窗口管理器和其他应用程序)插入到队列中。应用程序通常也会从其他线程发送消息,以便在同一个线程中执行所有UI处理。
运行循环本身驻留在应用程序空间中,如下所示:
while (!stop)
{
message = WaitForNextMessage();
DispatchMessage(message);
}通常,无论您使用什么UI框架,都会提供一种机制来为特定类型的事件注册事件处理程序。
https://stackoverflow.com/questions/18288544
复制相似问题