Run Loop

作者: 城市之光 | 来源:发表于2016-11-11 18:29 被阅读18次

理解
进程是一家工厂,线程是一个流水线,Run Loop就是流水线上的主管;当工厂接到商家的订单分配给这个流水线时,Run Loop就启动这个流水线,让流水线动起来,生产产品;当产品生产完毕时,Run Loop就会暂时停下流水线,节约资源。
RunLoop管理流水线,流水线才不会因为无所事事被工厂销毁;而不需要流水线时,就会辞退RunLoop这个主管,即退出线程,把所有资源释放。

RunLoop并不是iOS平台的专属概念,在任何平台的多线程编程中,为控制线程的生命周期,接收处理异步消息都需要类似RunLoop的循环机制实现,Android的Looper就是类似的机制。

何时使用RunLoop?
仅当在为你的程序创建辅助线程的时候,你才需要显式运行一个runloop。Runloop是程序主线程基础设施的关键部分。所以,Cocoa程序提供了代码运行主程序的循环并自动启动runloop。iOS程序中UIApplication的run方法作为程序启动步骤的一部分,它在程序正常启动的时候就会启动程序的主循环。如果你使用Xcode提供的模板创建你的程序,那你永远不需要自己去显式的调用这些例程。
对于辅助线程,你需要判断一个runloop是否是必须的。如果是必须的,那么你要自己配置并启动它。你不需要在任何情况下都去启动一个线程的runloop。比如,你使用线程来处理一个预先定义的长时间运行的任务时,你应该避免启动runloop。Runloop在你要和线程有更多的交互时才需要,比如以下情况:
1.使用端口或自定义输入源来和其他线程通信。 AFNetworking中的子线程_networkRequestThread就是通过使用端口NSMachPort加入到runloop中的。
2.使用线程的定时器。一般就是加入到CommonMode模式的runloop中。
3.Cocoa中使用任何performSelector...的方法。
4.使线程周期性工作。

相关文章

  • runloop

    走进Run Loop的世界 (一):什么是Run Loop?走进Run Loop的世界 (二):如何配置Run L...

  • iOS Runloop学习笔记

    一、** what is run loop ** 1、A run loop is an abstraction t...

  • iOS开发之Run loop

    1.什么是Run loop,Run loop有什么作用? 2.Run loop 是怎么运作的? 3.什么情况下使用...

  • 详解Run Loop

    Run Loop Run Loop是事件驱动的。 iOS中有2套API来访问使用Run LoopFoundatio...

  • iOS Runloop(二)

    Run Loop观察者源是合适的同步或异步事件发生时触发,而run loop观察者则是在run loop本身运行的...

  • python asyncio并发编程(3)

    1. loop.run_forever()与loop.run_until_complete()的区别 (1) l...

  • IOS多线程编程指南二之Runloop

    一、什么是Runloop A run loop is an event processing loop that ...

  • Run Loops基础概念篇二

    When Would You Use a Run Loop? 你唯一要使用run loop,就是当你要在appli...

  • CFRunLoop -- API

    获取 Run Loop 的方法 运行以及停止 Run Loop 的方法 管理 Sources 的方法 管理 Obs...

  • Run Loop

    run loop(运行循环)是与线程相关的基础架构的一部分。它是一个事件处理循环,用于调度工作和协调传入事件的接收...

网友评论

      本文标题:Run Loop

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