zoukankan      html  css  js  c++  java
  • 简述 进程、线程、协程的区别 以及应用场景?

    1.进程是计算器最小资源分配单位 .

    2.线程是CPU调度的最小单位 .

    3.进程切换需要的资源很最大,效率很低 .

    4.线程切换需要的资源一般,效率一般(当然了在不考虑GIL的情况下) .

    5.协程切换任务资源很小,效率高(协程本身并不存在,是程序员通过控制IO操作完成) .

    6.多进程、多线程根据cpu核数不一样可能是并行的,但是协程是在一个线程中 所以是并发.

    进程:

    一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销大。

    线程:

    调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变量),从而极大地提高了程序的运行效率。

    协程:

    是一种用户态的轻量级线程,协程的调度完全由用户控制。

    协程拥有自己的寄存器上下文和栈。

    协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,

    可以不加锁的访问全局变量,所以上下文的切换非常快。

  • 相关阅读:
    感触
    十道海量数据处理面试题
    jQuery横向手风琴图片滑块
    源码分享-纯CSS3实现齿轮加载动画
    Unix/Linux环境下多一点不如少一点
    参加中国系统架构师大会感悟
    Sql Server新手学习入门
    程序设计应知道的那些事儿之函数
    Windows 下如何安装配置Snort视频教程
    程序设计应知道的那些事儿
  • 原文地址:https://www.cnblogs.com/Rivend/p/12052550.html
Copyright © 2011-2022 走看看