简述
runloop
是与线程关联的基本基础结构的一部分。一个runloop
是一个事件处理循环,你用它来安排工作,并协调接收传入的事件。runloop
的目的是在有工作要做时让线程忙,而在没有工作时让线程进入睡眠状态。
知识点
- 接受两种事件:
- 输入源(异步事件)
- 定时器(同步事件)
/* 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
};