美文网首页
微点滴:runloop和线程有什么关系?

微点滴:runloop和线程有什么关系?

作者: DXSmile | 来源:发表于2016-03-31 23:42 被阅读1575次

runloop和线程有什么关系?

总的说来,Run loop,正如其名,loop表示某种循环,和run放在一起就表示一直在运行着的循环。
实际上,run loop和线程是紧密相连的,可以这样说run loop是为了线程而生,没有线程,它就没有存在的必要。
Run loops是线程的基础架构部分,Cocoa和CoreFundation都提供了run loop对象方便配置和管理线程的run loop。
每个线程,包括程序的主线程(main thread)都有与之相应的run loop对象。
runloop和线程的关系:主线程的run loop默认是启动的, 子线程的runloop默认是不开启的,需要我们自己手动开启循环; 。
iOS的应用程序里面,程序启动后会有一个如下的main()函数

int main(int argc, char * argv[]) {   
   @autoreleasepool {        
    return UIApplicationMain(argc, argv, nil,  
             NSStringFromClass([AppDelegate class]));   
   }
}

也就是我们常说的主循环!!!
重点是UIApplicationMain()函数,这个方法会为main thread设置一个NSRunLoop对象,这就解释了:为什么我们的应用可以在无人操作的时候休息,需要让它干活的时候又能立马响应。
对其它线程来说,run loop默认是没有启动的,如果你需要更多的线程交互则可以手动配置和启动,如果线程只是去执行一个长时间的已确定的任务则不需要。
在任何一个Cocoa程序的线程中,都可以通过以下代码来获取到当前线程的run loop。

NSRunLoop *runloop = [NSRunLoop currentRunLoop];

此外还有一点非常重要的就是,runloop执行完毕之后,就会进入休眠 , 只有在某个情况下触发了,才会再次调用;

相关文章

  • iOS Runloop & AutoReleasePool

    Runloop概述 runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?...

  • RunLoop

    iOS刨根问底-深入理解RunLoop runloop 和线程有什么关系 iOS 多线程:RunLoop详细总结

  • 2019 iOS 面试 -中级篇之 RunLoop

    1. runloop是来做什么的?runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢? R...

  • RunLoop总结

    RunLoop介绍 RunLoop和线程有什么关系? 总的来说,RunLoop正如其名,loop表示某种循环,和r...

  • runloop

    runloop是什么 runloop与线程有什么关系 runloop的原理 runloop的使用

  • RunLoop的使用

    RunLoop是什么? 它有什么作用?Runloop和多线程又是什么关系?timer 与 Runloop 有什么关...

  • Runloop在实际中到底有什么用?

    在面试中经常会被问到关于Runloop的问题,比如: runloop和线程有什么关系? runloop的mode作...

  • RunLoop面试题

    1、什么是RunLoop?2、开发中如何使用RunLoop?什么应用场景?3、RunLoop和线程有什么关系?4、...

  • 微点滴:runloop和线程有什么关系?

    runloop和线程有什么关系? 总的说来,Run loop,正如其名,loop表示某种循环,和run放在一起就表...

  • Runloop相关问题

    引用来自 1.Runloop和线程有什么关系? 每个线程都会有一个自己的runloop,线程一般不是单一运行,往往...

网友评论

      本文标题:微点滴:runloop和线程有什么关系?

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