首先线程是什么?
进程要想执行任务,必须要有线程,而且每个进程至少要有一条线程
线程是进程的基本执行单元,进程中的所有任务都在线程中执行,比如酷狗播放音乐,使用迅雷下载电影,都要在线程中执行
程序启动的时候它会默认开启一条线程
一个进程中可以有多个线程
其次什么是多线程
一个进程中可以开启多条线程,多条线程可以”同时”执行不同的任务
有时候程序会出现阻塞的问题,而多线程就可以解决程序阻塞这个问题
多线程的有点就是能够提高程序的执行效率,给用户良好的用户体验
多线程的执行原理
单核 CPU 同一时间只能处理一个线程,只有一个线程在执行任务
多线程的同时执行本质上就是 CPU 在多条线程之间来回的快速切换,当CPU 的速度足够快的时候,就造成了多线程同时执行的假象,如果线程非常多, CPU 会在多条线程之间不断的调度任务,就会造成性能低下
实现多线程有多种方案
比如 pthread, 这是一套通用的多线程 API, 适用于多个平台,难度比较大,需要程序员管理线程的生命周期,所以就几乎不用
NSThread, 使用起来更加的面对对象,简单易用,可以直接操作线程对象,需要程序员管理线程的生命周期,用的也不太多
GCD的出现是为了替代 NSThread 等线程技术,是纯 C 语言的框架,它的生命周期不需要程序员管理,它会自动管理,所以现在使用的场景比较多,性能最好,代码也最简单
NSOperation 是封装了 GCD, 比 GCD 简单实用,它的周期也是自动管理不需要程序员去管理,使用的也比较多
网友评论