美文网首页
【Go 精选】协程是什么?

【Go 精选】协程是什么?

作者: 熊本极客 | 来源:发表于2021-09-26 22:51 被阅读0次

    1 为什么需要协程

    案例:系统闲时有 10 人同时在线,高峰时有 10000 人同时在线。如果打算启动 10000 个线程来处理任务,由于每个线程至少会占用 4M 的内存空间,10000 个线程会消耗 39G 内存,但是服务器的内存配置只有区区 8G。
    解决方案:① 增加服务器;② 提高代码效率

    增长的线程.png

    如何提高代码效率
    提高代码效率的关键问题:①系统线程占用非常多的内存空间;②线程切换会占用大量的系统时间

    线程切换.png

    协程可以解决上述 2 个多线程问题。协程没有增加线程数量,只是在线程的基础上通过分时复用方式运行多个协程

    协程切换.png

    3 协程是什么

    3.1 多线程简介

    CPU拥有多个核心线程,实现多个子任务(用户线程)同时执行。

    多线程.png

    问题:内核级线程和用户级线程的区别
    解答:a 图表示用户级线程,如果进程中某个线程发生阻塞,那么整个进程中的线程都无法执行。b 图表示内核级线程,进程中的线程会直接调用内核级线程,即真正意义的多线程。

    内核线程.png

    3.2 协程

    协程是抽象出来的线程,并在用户空间进行协程管理,减少内核的压力。

    协程.png

    多个协程可以在同一个线程上运行。

    协程工作的时间轴.png

    相关文章

      网友评论

          本文标题:【Go 精选】协程是什么?

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