同步异步、进程和线程

一、同步和异步

其实同步异步的概念很简单,同步就是我们之前写程序的时候都是从上到下执行的,从左到右执行的。

1个人执行多个任务,也是依次去执行的,1个人同一时间就执行一个任务

异步:就是多个人同时的去执行任务。

二、线程和进程

进程

进程就是系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间。就比如说你有一个QQ音乐的进程,一个QQ浏览器的进程QQ音乐这个进程不能访问QQ浏览器进程内存中的数据。进程其实就是可以说帮你分配了内存,不会帮你做事情,线程才是会去帮你做事情的。

进程中不只是程序代码,进程还包括当前活动,通过程序计数器的值和处理器寄存器的内容来表示。进程还包括进程堆栈段(包括了临时数据,比如说函数参数,返回地址和局部变量)还有数据段(比如说全局变量),进程可能还包括堆(在进程运行期间动态分配的内存)。

也就是说进程需要一定的资源(包括CPU时间、内存、文件、I/O设备)去完成它的任务,这些资源可以在进程创建的时候分配给进程,也可以在执行进程的时候分配给进程,进程除了在创建的时候可以得到各种物理和逻辑资源以外,进程还可以接受传输过来的各种初始化数据(输入),比如说我有一个在进程,它的功能就是在终端或者是屏幕上显示文件的状态的,这个进程会得到一个文件名作为输入,并且执行适当的指令和系统调用以得到和显示终端所需要的信息,当进程中止的时候,操作系统会回收所有可再用的资源。

每个进程在操作系统内是用进程控制块也就是PCB来表示的,PCB中包括了进程状态,进程编号,程序计数器,寄存器,内存界限,还有打开文件的列表等等。

线程

线程是进程的基本执行的单元,一个进程中的所有任务都在线程中执行,一个进程中至少要有一个线程,一个进程可以由多个线程组成。线程是CPU使用的基本单元,由线程ID,程序计数器,寄存器几何和栈组成。它与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源。

多线程可以解决程序堵塞的问题,多线程可以提高程序的执行效率。

单核的CPU,同一时间只能处理1个线程,只有一个线程在执行

多线程的同时执行时CPU快速的在多个线程之间切换

cpu如果调度线程的时间足够的快,就会造成多线程的同时执行

如果线程数很多,CPU会在很多线程直接切换,消耗了大量的CPU资源,每个线程被调度的次数被降低,线程的执行效率也降低。

在切换线程的时候会把当前线程的状态先保存下来,在进行切换。

单线程的进程具有一个程序计数器来明确下一个执行的指令,这样的进程执行的过程是连续的,CPU是一个接着一个地去执行进程的指令,直到进程中止。而多线程进程是具有多个程序计数器,每一个指向下一个给定线程要执行的指令。

三、多线程的优缺点

总结一下多线程的优缺点

优点

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

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

线程上的任务执行完毕之后,会自动的去销毁

缺点

开启线程需要占用一定的内存空间

开启大量的线程会占用大量的内存空间,降低程序的性能

线程越多,cpu在调用线程上面的开销会越大

程序设计会更加复杂,线程间的通信,还有就是多线程的数据共享。

在ios中我们最好不要同时开太多线程,一般来说1-3条就可以了,最好不要超过5条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值