回覆列表
  • 1 # inuos25163

    Run loops是執行緒的基礎架構部分。一個run loop就是一個事件處理迴圈,用來不停的調配工作以及處理輸入事件。使用run loop的目的是使你的執行緒在有工作的時候工作,沒有的時候休眠。Run loop的管理並不完全是自動的。你仍必須設計你的執行緒程式碼以在適當的時候啟動run loop並正確響應輸入事件。Cocoa和CoreFundation都提供了run loop物件方便配置和管理執行緒的run loop。你建立的程式不需要顯示的建立run loop;每個執行緒,包括程式的主執行緒(main thread)都有與之相應的run loop物件。但是,自己建立的次執行緒是需要手動執行run loop的。在carbon和cocoa程式中,程式啟動時,主執行緒會自行建立並執行run loop。接下來的部分將會詳細介紹run loop以及如何為你的程式管理run loop。關於run loop物件可以參閱sdk文件。解析Run Looprun loop,顧名思義,就是一個迴圈,你的執行緒在這裡開始,並執行事件處理程式來響應輸入事件。你的程式碼要有實現迴圈部分的控制語句,換言之就是要有while或for語句。在run loop中,使用run loop物件來執行事件處理程式碼:響應接收到的事件,啟動已經安裝的處理程式。Run loop處理的輸入事件有兩種不同的來源:輸入源(input source)和定時源(timer source)。輸入源傳遞非同步訊息,通常來自於其他執行緒或者程式。定時源則傳遞同步訊息,在特定時間或者一定的時間間隔發生。兩種源的處理都使用程式的某一特定處理路徑。圖1-1顯示了run loop的結構以及各種輸入源。輸入源傳遞非同步訊息給相應的處理程式,並呼叫runUntilDate:方法退出。定時源則直接傳遞訊息給處理程式,但並不會退出run loop。

  • 中秋節和大豐收的關聯?
  • LOL知名博主腹黑去世,“沒能等到FPX奪冠,LPL群星為他送行”,你怎麼看?