gpt4 book ai didi

ios - RunLoop 如何减少 CPU 周期

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:09:39 25 4
gpt4 key购买 nike

几天来,我一直在 Apple 文档和 Google 搜索中阅读有关 RunLoops 的内容。我已经在很大程度上理解了 RunLoops 的概念,但对于有关 RunLoops 的一些基本问题,我仍然没有答案。

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

请为此提供一些建议..

最佳答案

关于 RunLoop(在其他平台上被称为窗口处理程序、主循环、事件循环)的全部意义在于它促进了事件驱动架构,其中应用程序仅在出现时运行是要做的事情——例如,响应用户交互。这与轮询相反。

该架构的基础是某种消息队列,线程可以阻塞该消息队列,直到有消息可供处理为止。在 MacOSX 和 iOS 系统上,队列是 Mach kernel RPC 端口。在 Windows 上,它是一个内核 IPC 队列,在 X-windows 系统上,它是一个 unix 域或网络套接字。

事件由其他系统组件插入到队列中 - 例如窗口管理器和其他应用程序。应用程序从其他线程向自己发送消息以便在同一线程中执行所有 UI 处理也很常见。

运行循环本身驻留在应用程序空间中,看起来像这样:

while (!stop)
{
message = WaitForNextMessage();
DispatchMessage(message);
}

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

关于ios - RunLoop 如何减少 CPU 周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18288544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com