多线程涉及的一些基本概念

在看多线程之前看一些基本概念

一:

线程:线程是CPU调度(执行任务)的最小单位;其实质就是一段代码(一个任务)

进程:系统中正在运行的一个应用程序;进程是CPU分配资源和调度的单位

两者的联系与区别:

1)线程是进程的组成部分,一个进程可以开启多个子线程,但是每1个进程至少要有1个线程
2)1个进程的所有任务都是在线程中执行的
3)同1个进程内的线程共享进程的资源

同步: 只能在当前线程按先后顺序依次执行,不开启新线程。
异步: 可以在当前线程开启多个新线程执行,可不按顺序执行。
队列: 装载线程任务的队形结构。
并发: 线程执行可以同时一起进行执行。
串行: 线程执行只能依次逐一先后有序的执行。

二:

多线程:一个程序开启多条线程,每条线程可以并行(同时)执行不同的任务

原理:

1)多个线程并发执行,其实质是CPU快速地在多条线程之间调度(切换)

2)当CPU调度线程的时间足够快,就会造成多线程并发执行的假象

优点:

1)能适当地提高程序的执行效率

2)能适当提高资源利用率(CPU和内存利用率)

缺点:

1)创建多线程是有开销的,包括内存空间和创建时间上的开销

2)如果开启大量线程,会降低程序的性能

3)线程越多,CPU在调度线程上的开销就越大

什么是主线程?主线程的作用和使用注意有哪些?

  • 定义
    • iOS程序运行后,默认开启1条线程,称为“主线程”
  • 作用
    • 显示/刷新UI界面
    • 处理UI事件(点击、滚动、拖拽事件等)
  • 注意
    • 别将耗时操作放在主线程,耗时操作会卡住主线程,影响UI的流畅度

实现多线程的方法一共有哪些?

NSThread / GCD / NSOPeration

项目中一般在哪用到多线程?

多线程一般用于耗时操作,如:

  • 网络请求
  • 上传,下载文件
  • 读取数据库
  • 文件操作
  • 大循环


猜你喜欢

转载自blog.csdn.net/haixing_zfj/article/details/76746129