2011-02-18 98 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響應速度)的原因,並且有空間可以騰出空間任何其他事件處理程序需要在同一個「打勾」中完成,或者異步分解,​​然後分派給另一個線程執行。

否則的東西將被阻止,直到控制返回到運行循環。