关于NSRunloop的个人理解!!!!!!
精选 转载http://blog.csdn.net/dongdongdongjl/article/details/7794050
今天看到了NSRunloop,其实之前也有看了关于NSRunloop的内容,在这里想简单的就个人的理解总结一下。其实自己在开发的过程当中,还没有更多的涉及到NSRunloop的功能。总的来说,NSRunloop就是类似于windows的消息机制。他的存在是给线程增加事件处理机制。
对于多线程开发而言,有两种处理方案,一种是不需要太多的交互,直接运算比较大的数据内容就可以,另一种方法是将执行函数加入到消息循环当中去,等待事件的发生,然后执行。
有了NSRunloop,会使线程的表现变得更加的好,他的存在一个重要目的是当有事件发生时,唤醒线程,当没有事件时,线程将处于休眠状态,这样的多线程运行,用户表现会非常的好。因为,线程其实也是有开销的。
对于NSRunloop来说,他的输入原,有事件输入原和定时器,事件输入原是异步通信的方式,而定时器是同步的输入方式。对于事件输入原,其实并不是用户直接定义的,而是通过一些特定的port对象机器方法共同实现的。
Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理 的循环,用来不停的调度工作以及处理输入事件。使用 run loop 的目的是让你的线 程在有工作的时候忙于工作,而没工作的时候处于休眠状态。
Run loops 是线程相关的的基础框架的一部分。一个 run loop 就是一个事件处理 的循环,用来不停的调度工作以及处理输入事件。使用 run loop 的目的是让你的线 程在有工作的时候忙于工作,而没工作的时候处于休眠状态。
何时使用Runloop
3.2 何时使用 Run Loop
仅当在为你的程序创建辅助线程的时候,你才需要显式运行一个 run loop。Run loop 是程序主线程基础设施的关键部分。所以,Cocoa 和 Carbon 程序提供了代码运 行主程序的循环并自动启动 run loop。IOS 程序中 UIApplication 的 run 方法(或 Mac OS X 中的 NSApplication)作为程序启动步骤的一部分,它在程序正常启动的时 候就会启动程序的主循环。类似的,RunApplicationEventLoop 函数为 Carbon 程序 启动主循环。如果你使用 xcode 提供的模板创建你的程序,那你永远不需要自己去显 式的调用这些例程。
对于辅助线程,你需要判断一个 run loop 是否是必须的。如果是必须的,那么 你要自己配置并启动它。你不需要在任何情况下都去启动一个线程的 run loop。比 如,你使用线程来处理一个预先定义的长时间运行的任务时,你应该避免启动 run loop。Run loop 在你要和线程有更多的交互时才需要,比如以下情况:
使用端口或自定义输入源来和其他线程通信 使用线程的定时器 Cocoa 中使用任何 performSelector...的方法 使线程周期性工作
2011-11-28 | © 2011 YouMi Mobile Co. Ltd. All Rights Reserved. [33]Threading Programming Guide
如果你决定在程序中使用 run loop,那么它的配置和启动都很简单。和所有线程 编程一样,你需要计划好在辅助线程退出线程的情形。让线程自然退出往往比强制关 闭它更好。关于更多介绍如何配置和退出一个 run loop,参阅”使用 Run Loop 对象” 的介绍。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
个人数字助理解决方案
借助大语言模型做一个人数字助理的解决方案
docker 个人数字助理 python claude AI -
python中关于object和type的个人理解
python里面一切都是对象,说到对象,那每个对象都有自己的类型,那既然说一起都是对
python object type 实例化 父类 -
关于***的个人理解与问题解决
***原理以及搭建和问题解决
*** 隧道技术 -
关于损失函数的一些个人理解
关于损失函数的一些个人理解1、损失函数的定义:量化不同的错误到底有多坏
损失函数 SVM损失 交叉熵损失 softmax loss 概率分布 -
关于负荷电量的一些个人理解
简言之: 电量的单位是kwh(千瓦时) 平时说的负荷都是有功负荷,有功负荷单位是kw(千瓦),或Mw(兆瓦)
collection/summary -
NSRunLoop 详解
今天看到了NSRunloop,其实之前也有看了关于NSRunloop的内容,在这里想简单的就个人的理解总结一下。
iOS 多线程 #import 子线程 自定义 -
关于Promise的一些个人理解jQuery的deferred
jQuery的deferred
jQuery的deferred -
关于NSRunLoop和NSTimer的深入理解
一、什么是NSRunLoop NSRunLoop是消息机制的处理模式 NSRunLoop的作用
主线程 引用计数 多线程 监听事件 测试程序 -
关于深拷贝和浅拷贝的个人理解
关于深拷贝和浅拷贝的个人理解 一、深拷贝和浅拷贝区别 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短...
dcc lili jquery javascript lo-dash