runLoop

作者: 帅帅的mum | 来源:发表于2023-05-17 14:48 被阅读0次

    runloop是通过事件循环来对事件管理的一个对象。线程和runloop一一对应,映射关系保存在一个全局字典中(键值对:线程:runloop)

    1、没有消息处理时,休眠已避免资源占用,由用户态切换到内核态。有消息处理时立刻被唤醒,由内核态切换到用户态

     应用:(1)用户滑动时模式为追踪模式计时器不工作,需要运行在common模式

    (2)子线程数据请求完数据更新UI时保证不打断用户的滑动操作,需要把更新UI放在默认模式下

    runloop 组成:Modes->sources(sources0:基于port,source1:非基于port,如触摸、点击)/timers/observe,要想启动runloop需要sources,或timer触发

    注:源码中主线程不需要sources/timer

    CFRunLoop和NSRunLoop区别:

    CFRunLoop在coreFroundation框架中,纯C语言实现,线程安全

    NSRunLoop对CFRunLoop面向对象的封装,非线程安全

    runloop或者条件锁(NScondition)可以使线程保活

    可用runloop监测卡顿:CFRunLoopObserver

    相关文章

      网友评论

          本文标题:runLoop

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