系统资源分配的最小单位
,在iPhone中就是一个应用程序;进程中的任务都是由线程来执行
;进程至少有一条线程
,在进程开始执行时默认开启
,也就是常说的:主线程;资源、地址空间都是相互独立
的(安卓会涉及到多进程开发);执行任务的基本单元
;共享资源和地址空间
;进程中至少有一条线程
;资源、地址空间相互独立
,线程之间资源、地址空间可以共享
;不会影响其他进程
;线程奔溃后,进程也会随之奔溃
,进程比线程更加健壮;进程切换时,消耗的资源大,效率高;但涉及共享资源的并发操作只能使用线程
;程序运行的入口、顺序执行序列和程序入口
。但是 线程不能独立执行,必须依存在应用程序中
,由应用程序提供多个线程执行控制。单核cpu
同一时间CPU只能处理1个线程的任务,需要CPU在各个线程中快速切换,造成了多线程执行的假象。而切换的时间单位就是时间片
。CPU进行线程切换时需要耗费cpu资源的,所以线程过多的情况下会造成性能的下降。多核cpu
情况下才是真正的多线程执行;runloop与线程是一一对应
的,一个runloop对应一个核心的线程,为什么说是核心的,是因为runloop是可以嵌套的,但是核心的只能有一个,他们的关系保存在一个全局的字典里;runloop是来管理线程
的,当线程的runloop被开启后,线程会在执行完任务后进入休眠状态,有了任务就会被唤醒去执行任务;runloop在第一次获取时被创建,在线程结束时被销毁
;对于主线程来说,runloop在程序一启动就默认创建好了;