Skip to content

Latest commit

 

History

History
25 lines (13 loc) · 1.06 KB

协程是什么,为什么需要协程.md

File metadata and controls

25 lines (13 loc) · 1.06 KB

1.协程

本质⽤户空间下的线程

拥有⾃⼰的寄存器上下⽂和栈

切换情况:先将寄存器上下⽂和栈保存,等切换回来的时候再进⾏恢复

2、原因

⼀是节省 CPU,避免系统内核级的线程频繁切换,造成的 CPU 资源浪费。⽽协程是⽤户态的线程,⽤户可以⾃⾏

控制协程的创建与销毁,极⼤程度避免了系统级线程上下⽂切换造成的资源浪费。

⼆是节约内存,在 64 位的 Linux 中,⼀个线程需要分配 8MB 栈内存和 64MB 堆内存,系统内存的制约⽆法开启

更多线程实现⾼并发。但是协程他的大小只有几十kb ,可以轻松有⼗⼏万协程,这是线程⽆法⽐拟的。

三是稳定性,前⾯提到线程之间通过内存来共享数据,这也导致了⼀个问题,任何⼀个线程出错时,进程中的所有

线程都会跟着⼀起崩溃。

四是开发效率,使⽤协程在开发程序之中,可以很⽅便的将⼀些耗时的 IO 操作异步化,例如写⽂件、耗时 IO 请求

等。