簡述
1、runloop是事件接收和分發機制的乙個實現
3、以及節省cpu資源,提高程式效能:(該做事時做事,該休息時休息)
如何獲取runloop物件:
這裡的話ios提供了兩套api來訪問或使用runloop
1、cfrunloopref 是在 corefoundation 框架內的,它提供了純 c 函式的 api,所有這些 api 都是執行緒安全的。
2、nsrunloop 是基於 cfrunloopref 的封裝,提供了物件導向的 api,但是這些 api 不是執行緒安全的。
//具體顯示
int main(int argc, char * argv)
}
獲取的方式
//獲取的兩種方式
1、這種為cfrunloopref中的
cfrunloopgetcurrent(); // 獲得當前執行緒的runloop物件
cfrunloopgetmain(); // 獲得主線程的runloop物件
2、這種為nsrunloop中的
[nsrunloop currentrunloop]; // 獲得當前執行緒的runloop物件
[nsrunloop mainrunloop]; // 獲得主線程的runloop物件
相關類
//相關的五個類
1、cfrunloopref
1、代表乙個runloop物件
2、cfrunloopmoderef
1、代表runloop的執行模式
1、乙個runloop包含若干個mode,每個mode又包含若干個source/timer/observer
2、每次runloop啟動時,只能指定其中乙個 mode,如果需要切換mode,只能退出loop,再重新指定乙個mode進入
3、同一時刻只能進行一種模式
2、蘋果內部提供了五種模式
1、kcfrunloopdefaultmode (nsdefaultrunloopmode)
2、uitrackingrunloopmode
1、介面跟蹤 mode,用於 scrollview 追蹤觸控滑動,保證介面滑動時不受其他 mode 影響
//這個通常用不到
3、uiinitializationrunloopmode
//這個通常用不到
4、gseventreceiverunloopmode
1、接受系統事件的內部 mode
5、kcfrunloopcommonmodes
1、這是乙個佔位用的mode,這個的話用語言很難表達,後面會看到例項中會使用到這裡,大家仔細體會
3、cfrunloopsourceref
1、用來管理所有事件的事件源,包括自定義的事件,以及系統自帶的事件。
2、source有兩個版本:source0 和 source1
1、source0-----為使用者主動觸發的事件
2、source1-----通過核心和其他執行緒相互傳送訊息。
4、cfrunlooptimerref
1、基本上說的就是nstimer,基本用法如下例項標示
5、cfrunloopobserverref
1、用來監聽runloop的狀態改變
2、狀態列表
kcfrunloopentry = (1ul << 0), // 即將進入loop
kcfrunloopbeforetimers = (1ul << 1), // 即將處理 timer
kcfrunloopbeforesources = (1ul << 2), // 即將處理 source
kcfrunloopbeforewaiting = (1ul << 5), // 即將進入休眠
kcfrunloopafterwaiting = (1ul << 6), // 剛從休眠中喚醒
kcfrunloopexit = (1ul << 7), // 即將退出loop
kcfrunloopallactivities = 0x0fffffffu //所有狀態
補充
乙個 runloop 有很多 mode ,乙個 mode 裡面有很多得 source/timer/observer ,但是同一時刻只能進行一種模式。 如圖:
例項
IOS 多執行緒 RUNLOOP 機制 二
二,何時使用run loop 對於輔助線程,在需要和執行緒有更多互動時,才使用run loop。比如 1 使用埠或者自定義輸入源來和其他執行緒通訊 2 使用執行緒定時器 3 cocoa中使用任何performselector.的方法 參考 table performing selectors on ...
多執行緒學習筆記4 RunLoop
基本作用 runloop處理邏輯 官方版 runloop物件 ios中有2套api來訪問和使用runloop core foundation nsrunloop和cfrunloopref都代表著runloop物件 nsrunloop是基於cfrunloopref的一層oc包裝,所以要了解runloo...
多執行緒 開張篇
提到執行緒第一反應其他概念程序,作業系統。執行緒就是幹活的人。多執行緒就是多個人幹活。執行緒可以分ui執行緒和工作執行緒。ui執行緒就是前台工作者,一般都是小姑娘。工作執行緒就是後台工人 幹些苦活累活的 前台吩咐後台幹活,後台幹完了要通知前台。這就是男女搭配,幹活不累。前台和後台共用乙個廁所。這時男...