随口说
- 进程创建了一个个线程小弟用来给它服务,线程做小弟做久了,心想我也弄几个手下啊,然后它也背着操作系统偷偷整了几个小弟,给他干活,这几个小弟就是协程了。
介绍
- 协程,就是线程创建的执行体,同样线程需要维护每个协程的执行入口,栈基,栈指针和执行现场等,用来不同协程进行切换。由于用户态不能操作内核空间,所以协程只存在于用户空间中,操作系统是浑然不知的。
原因
- 既然切换也得保存现场、也得各种设置寄存器,那么它和本来的线程区别在哪?
- 首先,它是更加灵活、轻量级的,因为现在CPU、内存啥的确实厉害,线程这么大小的量级对于它们的计算速度来说,还是有点大的,所以就再小一点。
- 其次,现在高并发场合随处可见,各种移动设备每天产出大量数据,同时涌入如此多的数据,多开一些协程,压力就会小一些。毕竟线程切换还是需要用户态、内核态的转换,但是协程的话,只在用户空间中使用,所以不存在这个问题。
- 最后,让协程大放异彩的是其在I/O多路复用中的使用,具体细节另写一篇吧。