美文网首页
runloop的原理笔记

runloop的原理笔记

作者: 明似水 | 来源:发表于2017-03-14 20:01 被阅读37次

    一般来说,一个线程一次只能执行一个任务,执行完成后线程就会推出。如果我们需要一个机制,让线程随时处理事件但并不退出,通常用do {}while 来处理。

    这种称之为Event loop,在Windows和node.js或者OSX/IOS里面都可以看到,它的关键点是:如何管理事件与信息,如何让线程在没有处理消息和事件时休眠以避免资源占用、在有消息到来时立刻被唤醒。

    所以,runloop实际上就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行上面的Event Loop逻辑。线程执行了这个函数后,就会一直处于这个函数内部“接受消息——>等待——>处理”的循环中,直到传入quit消息,函数返回!

    iOS中提供了两个对象:NSRunLoop和CFRunLoopRef

    线程和runloop之间是一一对应的,其关系是保存在一个全局的dictionary里。线程刚创建时并没有RunLoop,如果你不主动获取,那它一直都不会有,

    从iOS5推出ARC开始,我们就不用MRC了!

    END.

    相关文章

      网友评论

          本文标题:runloop的原理笔记

          本文链接:https://www.haomeiwen.com/subject/ftpbgttx.html