首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RunLoop如何减少CPU周期?

RunLoop如何减少CPU周期?
EN

Stack Overflow用户
提问于 2013-08-17 11:58:25
回答 1查看 528关注 0票数 3

我在苹果的文档和谷歌搜索的东西上读了几天关于RunLoops的文章。我在很大程度上理解了RunLoops的概念,但是对于有关RunLoops的一些基本问题,我仍然没有得到答案。

  1. Runloop究竟是如何工作的?它是否类似于在某个系统级别上运行的时间循环?
  2. 如果它确实是某种系统级别的while循环,那么它与轮询有什么不同?

请给我一些指点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-17 12:17:41

关于RunLoop (在其他平台上被命名为Window Handler、主循环、事件循环)的全部要点是,它为事件驱动体系结构提供了便利,在这种体系结构中,应用程序只在有需要做的事情时才运行--例如,响应用户交互。这与投票截然相反。

该体系结构的基础是某种类型的消息队列,线程可以将其阻塞,直到消息可供处理。在MacOSX和iOS系统上,队列是一个马赫核 RPC port。在Windows上,它是一个内核IPC队列,以及系统、unix域或网络套接字.

事件由其他系统组件(例如窗口管理器和其他应用程序)插入到队列中。应用程序通常也会从其他线程发送消息,以便在同一个线程中执行所有UI处理。

运行循环本身驻留在应用程序空间中,如下所示:

代码语言:javascript
复制
while (!stop)
{
    message = WaitForNextMessage();
    DispatchMessage(message);
}

通常,无论您使用什么UI框架,都会提供一种机制来为特定类型的事件注册事件处理程序。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18288544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档