go语言中的协程详解

发布时间:2024-09-15 14:01

协程的特点

1.该任务的业务代码主动要求切换,即主动让出执行权限

2.发生了IO,导致执行阻塞(使用channel让协程阻塞)

与线程本质的不同

C#、java中我们执行多个线程,是通过时间片切换来进行的,要知道进行切换,程序需要保存上下文等信息,是比较消耗性能的

GO语言中的协程,没有上面这种切换,一定是通过协程主动放出权限,不是被动的。

例如:

C# 中创建两个线程

go语言中的协程详解_第1张图片

可以看到1和2是交替执行的

go语言中的协程详解_第2张图片

Go语言中用协程实现一下

runtime.GOMAXPROCS(1)

go语言中的协程详解_第3张图片

这个结果就是 执行了1 在执行2

上述两种方式来进行协程的切换

  • 1.该任务的业务代码主动要求切换,即主动让出执行权限

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号