2011-02-18 81 views
4

本月早些时候,我问了这个问题'What is a runloop?'阅读答案并做了一些尝试后,我得到了它的工作,但我仍然不完全理解它。如果runloop只是一个与线程关联的循环,并且它不会在后台产生另一个线程,我的线程中的其他任何代码(mainthread保持简单)都可以执行,而不会“阻塞”/不运行因为它在某个地方造成无限循环?runloop实际上是如何工作的

这是第一个问题。然后结束我的第二个。

如果我在处理完这件事之后得到了一些正确的结果,但没有完全理解它,runloop就是一个循环,在其中附加'flags'来通知runloop,当涉及标志位置时, “停止”并执行那个附加的处理程序?然后,它继续跑到下一个地方。

runloop

因此,在这种情况下,没有事件被放置在阙的连接,但是当它涉及到的事件它采取任何行动,龙头1相关联,并再次等上运行,连接之前执行它。还是我尽可能了解这个概念?

回答

1

“Sort of。”您是否看过this particular documentation

它深入到相当深入的深度 - 运行循环的体系结构和操作。

+0

是的,我有,但我有问题,抓住它的概念:( – LuckyLuke 2011-02-18 18:01:36

1

运行循环如果调度时间太长或永远循环的方法将被阻止。

这就是为什么一个iPhone应用程序想要做所有不适合用户界面运行循环的1个“滴答”(比如某些动画帧速率或UI响应速度)的原因,并且有空间可以腾出空间任何其他事件处理程序需要在同一个“打勾”中完成,或者异步分解,​​然后分派给另一个线程执行。

否则的东西将被阻止,直到控制返回到运行循环。

相关问题