iOS开发多线程----简单介绍篇

一.进程和线程

 1. 什么是进程?

进程:系统中正在运行的应用程序,进程为应用程序在内存中"开辟独立内存空间"

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

比如同时打开QQ、Xcode,系统就会分别启动2个进程




2. 什么是线程?

线程:cpu调度的最小单元 , 程序中的代码都是由线程来执行,同一个线程中的代码是顺序执行的(串行执行)

1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)

线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行

比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行



3. 线程的串行

1个线程中任务的执行是串行的

如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务

也就是说,在同一时间内,1个线程只能执行1个任务

比如在1个线程中下载3个文件(分别是文件A、文件B、文件C)



二. 多线程

1.什么是多线程 ?

1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务

比如同时开启3条线程分别下载3个文件(分别是文件A、文件B、文件C)


2.多线程执行原理

线程是由CPU调度的,整个系统中有很多条线程CPU在多条线程中快速的来回切换,以保证多条线程"同时"执行,因为CPU的切换速度非常的快,所以就能过照成的一种同时执行的假象


3. 多线程的优缺点
>1. 优点
a.能适当的提高效率
b.能适当的提高资源利用率(CPU资源/内存资源)
>2.缺点
a.开启线程占用内存资源, 每一个线程都会占用一定的内存资源,iOS7.0之前(主线程占用1M,子线程占用512KB);现在所有的线程默认都占用512KB,也可以通过设置线程对象的stackSize属性设置线程大小,一般我们不会这么设置;
b.线程越多,占用的资源越多(内存资源/CPU资源)
c.程序的复杂性也会提高(需要创建多个线程对象)

4.线程同步技术
>1.概念:多个线程按顺序执行
>2.实现技术:互斥锁
5.互斥锁:
>1.互斥锁使用的前提:多条线程抢占同一块资源
>2.优点: 能有效防止因多线程抢夺资源造成的数据安全问题

>3.缺点:需要消耗大量的CPU资源

6.资源共享

>1.问题:多线程同步执行

>2.解决方法:使用线程同步技术

>3.原因:当多条线程访问同一块资源的时候,就会出现数据错乱和数据安全的问题!

7.可调度线程池:

(存放可以被CPU 执行的线程)-- 准备就绪之后的线程! --- CPU 只执行可调度线程池中的线程!

可调度线程池中的状态:

可调度线程池:CPU 只会调度可调度线程池中的线程! 下面蓝色状态都位于可调度线程池中! '就绪','运行'!

不可调度线程池:下面红色状态都位于不可调度线程池中! "新建" ,"阻塞" ,"死亡"!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值