zoukankan      html  css  js  c++  java
  • 进程、线程、协程

    一、进程
    进程和线程是包含关系,每个进程中都至少有一条线程
    进程是计算机最小的资源分配单位
    可以利用多核,可以实现并行
    数据隔离
    创建、销毁、切换的时间开销都比较大
    随着开启的数量增加给操作系统带来压力

    使用场景:充分利用多核,高计算型的程序,但启动的数量有限


    二、线程
    线程是进程的一部分
    线程是被CPU调度的最小单位
    线程的切换是由操作系统完成的
    在CPython解释器下不能利用多核,数据共享
    创建、销毁、切换的时间开销都比进程小很多
    随着开启的数量增加给操作系统带来压力

    使用场景:高IO型,一些协程现有的模块不能规避IO操作的功能,适合使用多线程


    三、协程
    协程的切换工作是用户完成的
    协程是一个线程,完全不能利用多核,也不会产生数据不安全的现象
    多个任务之间互相切换不依赖操作系统,无论开启多少个协程都不会给操作系统带来负担
    开销比线程小

    使用场景:高IO型,通用的场景可以用协程现有的模块来规避一些IO操作

    四、线程和协程的区别

    协程不会产生数据不安全的现象,线程会产生。
    线程的调度不能干预,只能写自己的逻辑,调度的事情由操作系统来
    协程是用户自己控制,能抢占更多的CPU资源取决于切换的策略(双刃剑)

  • 相关阅读:
    团队博客——Sprint计划会议1
    团队博客第一次(团队成员及团队作业说明)
    第一次冲刺-团队开发(第一天)
    cnblog评价以及团队软件的部分改善
    Sprint计划会议1
    团队开发--手机小游戏 需求分析
    团队博客和成员
    第一次冲刺01
    第二次冲刺——第二次总结
    团队开发——Alpha版总结会议
  • 原文地址:https://www.cnblogs.com/st-st/p/9715007.html
Copyright © 2011-2022 走看看