關於NSRunloop的我的理解!!!!!!

http://blog.csdn.net/dongdongdongjl/article/details/7794050

今天看到了NSRunloop,其實以前也有看了關於NSRunloop的內容,在這裏想簡單的就我的的理解總結一下。其實本身在開發的過程中,尚未更多的涉及到NSRunloop的功能。總的來講,NSRunloop就是相似於windows的消息機制。他的存在是給線程增長事件處理機制。

對於多線程開發而言,有兩種處理方案,一種是不須要太多的交互,直接運算比較大的數據內容就能夠,另外一種方法是將執行函數加入到消息循環當中去,等待事件的發生,而後執行。

有了NSRunloop,會使線程的表現變得更加的好,他的存在一個重要目的是當有事件發生時,喚醒線程,當沒有事件時,線程將處於休眠狀態,這樣的多線程運行,用戶表現會很是的好。由於,線程其實也是有開銷的。
對於NSRunloop來講,他的輸入原,有事件輸入原和定時器,事件輸入原是異步通訊的方式,而定時器是同步的輸入方式。對於事件輸入原,其實並非用戶直接定義的,而是經過一些特定的port對象機器方法共同實現的。

Run loops 是線程相關的的基礎框架的一部分。一個 run loop 就是一個事件處理 的循環,用來不停的調度工做以及處理輸入事件。使用 run loop 的目的是讓你的線 程在有工做的時候忙於工做,而沒工做的時候處於休眠狀態。
Run loops 是線程相關的的基礎框架的一部分。一個 run loop 就是一個事件處理 的循環,用來不停的調度工做以及處理輸入事件。使用 run loop 的目的是讓你的線 程在有工做的時候忙於工做,而沒工做的時候處於休眠狀態。

什麼時候使用Runloop

3.2  什麼時候使用 Run Loop
僅當在爲你的程序建立輔助線程的時候,你才須要顯式運行一個 run loop。Run loop 是程序主線程基礎設施的關鍵部分。因此,Cocoa 和 Carbon 程序提供了代碼運 行主程序的循環並自動啓動 run loop。IOS 程序中 UIApplication 的 run 方法(或 Mac OS X 中的 NSApplication)做爲程序啓動步驟的一部分,它在程序正常啓動的時 候就會啓動程序的主循環。相似的,RunApplicationEventLoop 函數爲 Carbon 程序 啓動主循環。若是你使用 xcode 提供的模板建立你的程序,那你永遠不須要本身去顯 式的調用這些例程。
對於輔助線程,你須要判斷一個 run loop 是不是必須的。若是是必須的,那麼 你要本身配置並啓動它。你不須要在任何狀況下都去啓動一個線程的 run loop。比 如,你使用線程來處理一個預先定義的長時間運行的任務時,你應該避免啓動 run loop。Run loop 在你要和線程有更多的交互時才須要,好比如下狀況:
 使用端口或自定義輸入源來和其餘線程通訊   使用線程的定時器   Cocoa 中使用任何 performSelector...的方法   使線程週期性工做
2011-11-28 | © 2011 YouMi Mobile Co. Ltd. All Rights Reserved.  [33] Threading Programming Guide
若是你決定在程序中使用 run loop,那麼它的配置和啓動都很簡單。和全部線程 編程同樣,你須要計劃好在輔助線程退出線程的情形。讓線程天然退出每每比強制關 閉它更好。關於更多介紹如何配置和退出一個 run loop,參閱」使用 Run Loop 對象」 的介紹。
相關文章
相關標籤/搜索