1 为什么需要协程
案例:系统闲时有 10 人同时在线,高峰时有 10000 人同时在线。如果打算启动 10000 个线程来处理任务,由于每个线程至少会占用 4M 的内存空间,10000 个线程会消耗 39G 内存,但是服务器的内存配置只有区区 8G。
解决方案:① 增加服务器;② 提高代码效率;
如何提高代码效率?
提高代码效率的关键问题:①系统线程占用非常多的内存空间;②线程切换会占用大量的系统时间;
协程可以解决上述 2 个多线程问题。协程没有增加线程数量,只是在线程的基础上通过分时复用方式运行多个协程。
协程切换.png3 协程是什么
3.1 多线程简介
CPU拥有多个核心线程,实现多个子任务(用户线程)同时执行。
多线程.png问题:内核级线程和用户级线程的区别?
内核线程.png
解答:a 图表示用户级线程,如果进程中某个线程发生阻塞,那么整个进程中的线程都无法执行。b 图表示内核级线程,进程中的线程会直接调用内核级线程,即真正意义的多线程。
3.2 协程
协程是抽象出来的线程,并在用户空间进行协程管理,减少内核的压力。
协程.png多个协程可以在同一个线程上运行。
协程工作的时间轴.png
网友评论