多线程一
2020-04-16 本文已影响0人
纳兰沫
线程 进程
线程的定义
线程是进程的基本执行单元
1.一个进程的所有任务都在线程中执行
2.进行要想执行任务 必须得有线程 进程至少要有一条线程
程序启动会默认开启一条线程 这条线程被称为主线程或UI线程
进程的定义
1.进程是指在系统中正在执行的一个应用程序
2.每个进程之间是独立的,每个进行均运行在其专用且受保护的内存
线程和进程的关系
地址空间: 同一进程的线程共享本进程的地址空间 而进程之间则是独立的地址空间
资源拥有: 同一进程内的线程共享本进程的资源如内存 I/O cpu等 但是进程之间的资源是独立的
线程是处理器调度的基本单位 但是线程不是
多线程的意义
1.能适当提高程序的执行效率
2.能适当提高资源的利用率(CPU 内存)
3.线程上的任务执行完成后 线程会自动销毁
缺点
1.开启线程需要占用一定的内存空间(默认情况下 每一条线程都占用512kb)
2.如果开启大量的线程 会占用大量的内存空间 降低程序的性能
3.线程越多 CPU在调用线程上的开销就越大
4.程序设计更加复杂 比如线程间的通信 多线程的数据共享
多线程的生命周期
多线程的生命周期.png线程池调度任务的周期
线程池调度任务的周期.pngnonatomic 和 atomic
nonatomic 非原子属性
nonatomic:非线程安全,适合内存小的移动设备
atomic 原子属性(线程安全),针对多线程设计的,默认值
1.保证同一时间只有一个线程能够写入(但是同一个时间多个线程都可以取值)
2.atomic 本身就有一把锁(自旋锁)
3.单写多读:单个线程写入,多个线程可以读取
atomic:线程安全,需要消耗大量的资源
所有属性都声明为 nonatomic
尽量避免多线程抢夺同一块资源
尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减小移动客户端的压力