iOS多线程之概念篇

进程

  • 进程是指一个系统中正在运行的一个应用程序.

  • 每个进程之间是独立的且均运行在其专用并受保护的内存空间内.

线程

线程是进程的基本执行单元,一个进程想要执行任务,必须得有线程(每一个进程必须至少有一个线程)

主线程

一个iOS程序运行后,默认会开启一条线程,该线程称为"主线程"或"UI线程".

主线程的作用

  • 显示/刷新UI界面

  • 处理UI事件(比如点击事件,滚动事件,拖拽事件等)

主线程的使用注意

不要将耗时的操作放置在主线程中,耗时操作会卡住主线程严重影响UI的流畅度,会给用户一种"卡"的感觉,体验效果不就好.

线程的串行

如果要在一个线程中执行多个任务,那么只能一个一个的按顺序执行这些任务,也就是说:在同一个时间内,一个线程中只能执行一个任务.

多线程

一个进程中可以开启多个线程,每个线程可以并行执行不同的任务.(多线程技术可以提高程序的执行效率)

多线程的原理

如果单核CPU(多核CPU的话那就是真*多线程)

  • 同一时间,CPU只能处理一条线程,只有一条线程在工作

  • 多线程并发执行时,其实是快速的在线程之间调度

  • 如果CPU调度线程的时间足够快,就会造成多条线程并发执行的假象

如果有很多很多线程

CPU会在多个线程之间调度,最终会导致 CPU累死,消耗大量的CPU资源,并且每条线程被调用执行的频率降低,导致线程的执行效率降低

多线程的优点

  • 能够适当的提高程序的执行效率

  • 能够适当提高资源的利用率(CPU,内存的利用率)

多线程的缺点

  • 开启线程需要占用一定的内存空间(iOS中默认情况下,主线程占用1 M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能

  • 线程越多,CPU在调度线程的开销就越大

  • 程序设计的更加复杂:比如线程之间的通讯,多线程的数据共享问题

线程的通讯

在一个进程中,线程往往不是鼓励存在的,多个线程之间是存在于通信关系的

线程通信的体现

  • 一个线程传递数据给另外一个线程

  • 一个线程执行完任务后转到另外一个线程继续执行任务

你可能感兴趣的:(iOS多线程之概念篇)