多线程

(括号:闲暇之余看会视频,然后就来这里记录所学的东西吧~ )
1:什么是进程?
进程是指在系统中正在运行的一个应用程序。
(比如:同时打开微信QQ,系统就会分别启动两个进程)
2:什么是线程?
线程是进程的基本执行单元,一个进程要想执行任务,必须得有线程(至少有一个线程)
比如使用QQ进行文字聊天,使用微信进行视频聊天,都需要线程在执行

3:什么是线程的串行?
如果要在1个线程中执行多个任务,那么只能一个一个的按顺序执行这些任务,也就是说,在同一时间内,一个线程中只能执行一个任务
比如在一个线程中3个下载任务(任务A,任务B,任务C)
多线程
因此,也认为线程是进程中的一条执行路径
4:什么是多线程?
一个进程中可以开启多条线程,每个线程可以并行(同时)执行不同的任务。
打个比方:
可以将进程比作是工厂车间,线程比作车间工人,由不同任务的工作车间在运作,最后生产出产品,因此呢,可以说多线程技术可以提高程序的执行效率
5:多线程的原理?
同一时间,cpu只能处理1条线程,只有一条线程在工作
多线程并发执行时,其实是cpu快速的在线程之间调度
如果cpu调度线程的时间足够快,就造成了多线程并发执行的假象

那么思考一个问题:

  • 如果线程非常非常多,会发生什么情况呢?
    cpu会在多个线程之间调度,最终会导致cpu累死,消耗大量的cpu资源:并且每条线程被调执行的频率降低,导致线程的执行效率降低
    **说完上述的玩意那我们再学习下线程的优缺点:
    优点:
    a能够适当的提高程序的执行效率
    b能够适当提高资源的利用率(cpu,内存)
    缺点:
    a开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512kb),如果开启大量的线程,就会占用大量的内存空间降低程序的性能
    b线程越多,cpu在调度线程上的开销就越大
    c程序设计更加复杂,比如线程之间的通信,多线程的数据共享等

***多线程在ios中的应用
a:什么是主线程?
一个ios程序运行后,默认会开启1条线程,该线程称为‘主线程’或‘ui线程’
b:主线程的主要作用?
1:显示/刷新UI界面
2:处理UI事件(比如点击事件,滚动事件,拖拽事件等)
主线程的使用注意:不要将比较耗时的操作放置在主线程中,因为耗时操作会卡主主线程严重影响UI流畅度,会给用户一种卡的感觉,体验效果不好
**ios中多线程的使用方案:
多线程