簡(jiǎn)述
runloop
是與線程關(guān)聯(lián)的基本基礎(chǔ)結(jié)構(gòu)的一部分堂湖。一個(gè)runloop
是一個(gè)事件處理循環(huán)托呕,你用它來安排工作,并協(xié)調(diào)接收傳入的事件。runloop
的目的是在有工作要做時(shí)讓線程忙琅捏,而在沒有工作時(shí)讓線程進(jìn)入睡眠狀態(tài)。
知識(shí)點(diǎn)
- 接受兩種事件:
- 輸入源(異步事件)
- 定時(shí)器(同步事件)
runloop結(jié)構(gòu)
/* Run Loop Observer Activities */
typedef CF_OPTIONS(CFOptionFlags, CFRunLoopActivity) {
kCFRunLoopEntry = (1UL << 0),
kCFRunLoopBeforeTimers = (1UL << 1),
kCFRunLoopBeforeSources = (1UL << 2),
kCFRunLoopBeforeWaiting = (1UL << 5),
kCFRunLoopAfterWaiting = (1UL << 6),
kCFRunLoopExit = (1UL << 7),
kCFRunLoopAllActivities = 0x0FFFFFFFU
};