协程和线程的区别

最近学习go语言,接触了协程的概念,对线程和协程的区别总结如下。

协程属于线程,即一个线程下面可以开辟多个协程。

协程是用户态的轻量级线程。

协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。

当多个协程切换时,由于其同属于一个线程,所以可以看作是同步执行的,不存在同时共享资源的情况,可以不加锁的访问全局变量,切换上下文非常快。

对于不需要cpu大量参与的业务场景来说,比如io广泛的业务,建议使用协程。

猜你喜欢

转载自blog.csdn.net/jigetage/article/details/89077317