Skip to main content
 Web开发网 » 操作系统 » linux系统

怎样理解golang的异步?

2021年10月14日9560百度已收录

Go的异步主要是由协程(goroutine)实现的。协程相对于线程来说,占用的内存更少,更轻量级,这也是Go在性能上的优势。

异步是相对于同步来说的,下面通过代码的执行顺序说明一下。

1.同步是按照顺序执行的。

怎样理解golang的异步?  Golang 第1张

上面的代码会输出:

第一步

第二步

第三步

2.异步在执行时,不是顺序执行的,异步代码有时会被直接跳过。

怎样理解golang的异步?  Golang 第2张

上面的代码会输出:

第一步

第三步

要让上面的异步代码都执行,可以这样修改一下:

怎样理解golang的异步?  Golang 第3张

在第九行,新增time.Sleep

方法,字面意思是先睡1s,实际上是Go的调度程序,先暂停执行当前的协程(即main)一秒钟,在这个时间内调度程序会搜索看一下,是否有其他的协程未执行,如果有,会先执行它。在它执行完之后,再回到之前的协程,继续执行下去。所以最后会输出:

第一步

第三步

第二步

以上是我的一些理解,希望可以帮到你。

评论列表暂无评论
发表评论
微信