iOS之进程和线程
进程:
正在进行中的程序被称为进程,负责程序运行的内存分配;
每一个进程都有自己独立的虚拟内存空间.
线程:(主线程最大占1M的栈区空间,每条子线程最大占512K的栈区空间)
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈)
线程是进程中一个独立的执行路径(控制单元);
一个进程中至少包含一条线程,即主线程;
可以将耗时的执行路径(如网络请求)放在其他线程中执行;
线程不能被杀掉,但是可以暂停/休眠一条线程.
创建线程的目的:
开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行.
多任务调度系统:
每个应用程序由操作系统分配的短暂的时间片(Timeslice)轮流使用CPU,由于CPU对每个时间片的处理速度非常快,因此,用户看来这些任务好像是同时执行的.
并发:
指两个或多个任务在同一时间间隔内发生,但是,在任意一个时间点上,CPU只会处理一个任务.
多线程的优势:
1> 充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入"并行运算"状态;
2> 将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好;
3> 当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整.
弊端:
新建线程会消耗内存空间和CPU时间,线程太多会降低系统的运行性能.
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。