美文网首页
线程 、进程、协程 三者区别

线程 、进程、协程 三者区别

作者: 晓得为_ | 来源:发表于2022-05-25 23:02 被阅读0次

    1.并行和并发

    在介绍进程、线程和协程这三个概念之前,有两个操作系统中的相关概念需要简单解释一下:并行和并发。
    并行:指多个任务同时执行。
    并发:指在一个时间段内,多个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行(即多个任务在同一处理机上交替执行)。

    2. 进程: 通俗理解一个运行起来的程序或者软件叫做进程

    2.1 每次启动一个进程都需要向操作系统索要运行资源,让进程中的线程去执行对应的代码,进程是操作系统分配资源的基本单位
    2.2 默认情况下一个进程只有一个线程,线程是依附在进程里面的, 没有进程就没有线程, 当在进程里面还可以创建多个线程

    3.线程:线程的出现是为了减少任务切换的消耗,提高系统的并发性,实现让一个进程也能执行多个任务。

    3.1 线程(thread)是在进程之后发展出来的概念。线程包含在进程中,也叫轻量级进程。线程是进程中一个单一顺序的控制流,像“线”一样(或许是其译名的由来),它是系统进行运算调度(即如何分配CPU去执行不同任务)的基本单位,一个进程的多个线程在执行不同任务的同时共享进程的系统资源(如虚拟地址空间,文件描述符等),如果把进程比作一个正在生产产品的车间,那么线程就好比是车间里面执行不同任务的工人,也可把进程比作道路,而线程就好比是并行的车道。线程由相关堆栈寄存器和线程控制块组成。

    4. 进程和线程的对比

    4.1 进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,默认一个进程只有一个线程,线程是依附在进程里面的
    4.2 线程是cpu调度的基本单位, 通过线程去执行进程中代码, 线程是执行代码的分支
    4.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
    4.4 多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁

    优点:线程切换的开销比进程切换的开销小,减少了任务切换的消耗,提高了操作系统的并发性能。
    缺点:相比进程不够稳定,多线程在操作共享数据时容易出错(比如丢失数据、产生死锁)

    5、协程:用户态的轻量级线程

    5.1 什么是协程

    协程是一种用户态的轻量级线程,又称"微线程",英文名Coroutine,协程的调度完全由用户控制。人们通常将协程和子程序(函数)比较着理解。

    协程的特点在于是一个线程执行,与多线程相比,其优势体现在:

    协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显,在处理大规模并发连接(IO密集型任务)时,协程要优于线程。

    协程不需要多线程的锁机制。在协程中控制共享资源不加锁,只需要判断状态就好了。

    Tips:利用多核CPU最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。

    相关文章

      网友评论

          本文标题:线程 、进程、协程 三者区别

          本文链接:https://www.haomeiwen.com/subject/pqwpprtx.html