多线程一

2020-04-16  本文已影响0人  纳兰沫

线程 进程

线程的定义

线程是进程的基本执行单元

1.一个进程的所有任务都在线程中执行
2.进行要想执行任务 必须得有线程 进程至少要有一条线程

程序启动会默认开启一条线程 这条线程被称为主线程或UI线程

进程的定义

1.进程是指在系统中正在执行的一个应用程序
2.每个进程之间是独立的,每个进行均运行在其专用且受保护的内存

线程和进程的关系

地址空间: 同一进程的线程共享本进程的地址空间 而进程之间则是独立的地址空间
资源拥有: 同一进程内的线程共享本进程的资源如内存 I/O cpu等 但是进程之间的资源是独立的
线程是处理器调度的基本单位 但是线程不是

多线程的意义

1.能适当提高程序的执行效率
2.能适当提高资源的利用率(CPU 内存)
3.线程上的任务执行完成后 线程会自动销毁
缺点
1.开启线程需要占用一定的内存空间(默认情况下 每一条线程都占用512kb)
2.如果开启大量的线程 会占用大量的内存空间 降低程序的性能
3.线程越多 CPU在调用线程上的开销就越大
4.程序设计更加复杂 比如线程间的通信 多线程的数据共享

多线程的生命周期

多线程的生命周期.png

线程池调度任务的周期

线程池调度任务的周期.png

nonatomic 和 atomic

nonatomic 非原子属性
nonatomic:非线程安全,适合内存小的移动设备
atomic 原子属性(线程安全),针对多线程设计的,默认值
1.保证同一时间只有一个线程能够写入(但是同一个时间多个线程都可以取值)
2.atomic 本身就有一把锁(自旋锁)
3.单写多读:单个线程写入,多个线程可以读取
atomic:线程安全,需要消耗大量的资源

所有属性都声明为 nonatomic
尽量避免多线程抢夺同一块资源
尽量将加锁、资源抢夺的业务逻辑交给服务器端处理,减小移动客户端的压力

上一篇下一篇

猜你喜欢

热点阅读