runloop的实现机制

一个RunLoop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用RunLoop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。runloop的设计是为了减少cpu无谓的空转。RunLoop的使用场合:

1、使用端口或自定义输入源和其他线程通信;

2、子线程中使用了定时器;

3、Cocoa中使用任何performSelector到了线程中运行方法;

4、使线程执行周期性任务。仅当在为你的程序创建辅助线程的时候,你才需要显式运行一个 RunLoop。

时间: 2024-10-10 10:54:49

runloop的实现机制的相关文章

RunLoop运行循环机制

http://www.jianshu.com/p/0be6be50e461 基本概念 进程 进程是指在系统中正在运行的一个应用程序,而且每个进程之间是独立的,它们都运行在其专用且受保护的内存空间内,比如同时打开迅雷.Xcode,系统就会分别启动两个进程. 线程 一个人进程如果想要执行任务,必须得有至少一条线程,进程的所有任务都会在线程中执行,比如使用网易云音乐播放音乐,使用迅雷下载电影,都需要在线程中执行. 主线程 iOS 程序运行后,系统会默认开启一条线程,称为“主线程”或者“UI 线程”,主

李洪强iOS开发之RunLoop的原理和核心机制

李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研究了RunLoop的原理和特性. RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLo

iOS 中RunLoop 原理与核心机制

目录[-] RunLoop的定义 目的 理解 特性 RunLoop机制 RunLoop 运行时调用栈 RunLoop支持的消息事件(Events) Run Loop Modes Run Loop应用实践 RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLoopCore Foundati

RunLoop相关知识的总结

RunLoop 即运行循环,也叫事件循环,本质为一个死循环.iOS一个程序运行起来之后,默认会开启一个运行循环,有需要处理的操作时,比如用户的输入事件时,RunLoop会自己跑起来运行,没有需要处理的事件时进入休息休眠的状态,充分节省CPU资源,提高程序的性能. 一.RunLoop的作用: 1.保证程序运行不退出,准确的说是保证线程的不退出,一般一个线程对应一个RunLoop.一个线程的任务执行完毕之后,就会退出,有时候我们需要一个线程随时待命,保持运行的状态不会退出,例如主线程,这就需要Run

RunLoop在main线程和自己创建的线程如何启动

本文介绍:这篇博客主要是描述的是RunLoop的启动机制.内容属于简单的系类的. 一.RunLoop和线程的关系 每一个RunLoop对应一个线程.每一个线程都可以拥有一个RunLoop,这也就是说线程可以创建一个属于自己的Runloop,也可以不创建自己的RunLoop.这都是根据程序内部的需求来决定的.这里需要注意的是:你创建一个runLoop但是你还必须要手动的让其run. 二.main线程的RunLoop 主线程是灌注这个程序的.而与main线程相对应的RunLoop是在程序启动的时候就

iOS Runloop理解

一.RunLoop的定义 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程.RunLoop就是控制线程生命周期并接收事件进行处理的机制. RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统. Foundation: NSRunLoopCore Foundation: CFRunLoop 核心部分,代码开源,C 语言编写,跨平台 二.目的 通过RunLoop机制实现省电,流畅,响应速度快,用户体验好 三.理解 进程是一家工厂,线程是一个流水线,Run Loo

iOS夯实:RunLoop

目标:用简洁易懂的语言归纳runLoop和对我们日常开发的影响. 1. 什么是RunLoop runLoop是一个与线程相关的机制,可以简单理解为一个循环. 在这个循环里面等待事件,然后处理事件.而这个循环是基于线程的. 在Cocoa中每个线程都有它的runLoop. 通过runLoop这样的机制,线程能够在没有事件需要处理的时候休息,有事情的时候运行.减轻CPU压力. 2. 日常开发中的RunLoop 简单理解了RunLoop之后,我们发现其实我们平时的开发,背后都无时无刻与runLoop有关

Runloop与autoreleasePool联系

autoreleasePool自动释放池,ARC模式下,苹果会自动进行内存管理,不需要我们手动去管理内存.这对于苹果开发者来说,省去了很多事情,不用再每天为了内存管理浪费掉宝贵的开发时间.大家都知道,在我们开发的ARC项目中,苹果会在合适的地方添加autoreleasePool,从而retain或者release对象.那么,请问:autoreleasePool在什么时机创建,在什么时机去释放呢?回答:这事只有ARC知道,我们开发者不知道.这种答案是不是很low呢?接下来,根据Runloop的运行

RunLoop小记录

1. 什么是RunLoop runLoop是一个与线程相关的机制,可以简单理解为一个循环. 在这个循环里面等待事件,然后处理事件.而这个循环是基于线程的. 在Cocoa中每个线程都有它的runLoop. 通过runLoop这样的机制,线程能够在没有事件需要处理的时候休息,有事情的时候运行.减轻CPU压力. 2. 日常开发中的RunLoop 简单理解了RunLoop之后,我们发现其实我们平时的开发,背后都无时无刻与runLoop有关. 但是我们很幸运不需要把时间都浪费在纠结这些底层细节上,绝大部分