NSRunLoop是IOS消息机制的处理模式
NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。
NSRunLoop 就是一直在循环检测,从线程start到线程end,检测inputsource(如点击,双击等操作)异步事件,检测timesource同步事件,检测到输入源会执行处理函数,首先会产生通知,corefunction向线程添加runloop observers来监听事件,意在监听事件发生时来做处理。
runloopmode是一个集合,包括监听:事件源,定时器,以及需通知的runloop observers
runloop与线程的关系?
只有在为你的程序创建次线程的时候,才需要运行run loop。对于程序的主线程而言,run loop是关键部分。Cocoa提供了运行主线程run loop的代码同时也会自动运行run loop。IOS程序UIApplication中的run方法在程序正常启动的时候就会启动run loop。如果你使用xcode提供的模板创建的程序,那你永远不需要自己去启动run loop
在多线程中,你需要判断是否需要run loop。如果需要run loop,那么你要负责配置run loop并启动。你不需要在任何情况下都去启动run loop。比如,你使用线程去处理一个预先定义好的耗时极长的任务时,你就可以毋毋需启动run loop。Run loop只在你要和线程有交互时才需要
进程和线程的区别?
一个应用程序有且只有一个进程,一个进程有1个和多个线程
线程生命周期
当我们创建一个线程实例对象的时候,这个线程是创建状态
当调用了start的方法的时候,线程被启动,此时进入就绪状态,等待CUP来执行
获取CPU的资源正在执行,这个时候进入运行状态
当线程执行完毕,或者被其他线程杀死的时候这个时候线程进入死亡状态,死亡状态的线程不可能在进入等待执行的就绪状态
由于某些原因,线程需要暂停自己,让出CPU的资源,这个时候线程进入阻塞状态
网友评论