美文网首页
【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

相关文章

  • 21. Go 协程

    21. Go 协程 Go 协程是什么? Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是...

  • 【Go 精选】协程是什么?

    1 为什么需要协程 案例:系统闲时有 10 人同时在线,高峰时有 10000 人同时在线。如果打算启动 10000...

  • 深入学习Kotlin协程(一)-协程是什么?

    Kotlin协程是什么? 协程并不是Kotlin提出的,其他的一些编程语言在早期就已经实现了协程,比如: Go、P...

  • go的协程并发-channel消息机制

    go的协程并发-channel消息机制 方式一 方式二 go-协程实现方案汇总

  • 随笔33号20180930-go协程小tips

    启动一个新的协程时,协程的调用会立即返回。与函数不同,程序控制不会去等待 Go 协程执行完毕。在调用 Go 协程之...

  • Go语言协程池模型--图数据库(Neo4j)写入

    Go语言协程池

  • Kotlin异步编程之协程

    其实,协程在编程语言中并不是什么新鲜概念。像 go, python 也有协程的概念,只不过 API 不尽相同。 为...

  • Go协程介绍

    参考自《go专家编程》Go协程所实现的是M:N的线程模型,M个协程运行在N个线程中。 1. MPG模型 Go协程中...

  • 协程(1)

    协程是什么 协程并不是 Kotlin 提出来的新概念,其他的一些编程语言,例如:Go、Python 等都可以在语言...

  • kotlin协程

    协程是什么 协程并不是 Kotlin 提出来的新概念,其他的一些编程语言,例如:Go、Python 等都可以在语言...

网友评论

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

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