• 什么是协程?


    协程 - 也叫微线程,是一种新的多任务并发的操作手段

    这中说话不够详细,我们换种说话

    协程就是用户态的线程。通常创建协程时,会从进程的堆中分配一段内存作为协程的栈。线程的栈有8MB,而协程栈的大小通常只有几十 KB,更低的内存占用空间为高并发提供了保证

    • 下面是关于协程这个概念的一些描述:

    协程的开发人员 Roman Elizarov 是这样描述协程的:协程就像非常轻量级的线程。线程是由系统调度> 的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎>是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建>任意个协程。

    对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序。协程能保留上一次调用时的状态,不需要像线程一样用回调函数,所以性能上会有提升。缺点是本质是个单线程,不能利用到单个CPU的多个核

    为什么要有协程?

    1. 是节省CPU,避免系统内核级的线程频繁切换,造成的CPU资源浪费。好钢用在刀刃上。而协程是用户态的线程,用户可以自行控制协程的创建于销毁,极大程度避免了系统级线程上下文切换造成的资源浪费。

    2. 是节约内存,在64位的Linux中,一个线程需要分配8MB栈内存和64MB堆内存,系统内存的制约导致我们无法开启更多线程实现高并发。而在协程编程模式下,可以轻松有十几万协程,这是线程无法比拟的。

    3. 是稳定性,前面提到线程之间通过内存来共享数据,这也导致了一个问题,任何一个线程出错时,进程中的所有线程都会跟着一起崩溃。

    4. 是开发效率,使用协程在开发程序之中,可以很方便的将一些耗时的IO操作异步化,例如写文件、耗时IO请求等。

    对于协程的总结

    特征:协程是运行在单线程中的并发程序
    优点:省去了传统 Thread 多线程并发机制中切换线程时带来的线程上下文切换、线程状态切换、Thread 初始化上的性能损耗,能大幅度唐提高并发性能
    简单理解:在单线程上由程序员自己调度运行的并行计算

  • 相关阅读:
    如何在WORDPRESS里面添加GLEGoogle Tag Manager广告跟踪代码
    sklearn实现逻辑回归_以python为工具【Python机器学习系列(十)】
    论文解读(USIB)《Towards Explanation for Unsupervised Graph-Level Representation Learning》
    自动化测试、测试左移、精准测试,一次性说透
    NFT 作品集推荐|金塔谷:为未来而战
    UDS诊断网络层ISO15765-2(CAN)
    MySQL数据库设计需要注意的点
    【AIGC调研系列】copilot在自动化测试脚本中的实际应用效果
    GameStop熊市杀入NFT交易,老牌游戏零售商借Web3焕发第二春
    axios--》axios初步操作
  • 原文地址:https://blog.csdn.net/qq_48078182/article/details/126324869