Go的异步主要是由协程(goroutine)实现的。协程相对于线程来说,占用的内存更少,更轻量级,这也是Go在性能上的优势。
异步是相对于同步来说的,下面通过代码的执行顺序说明一下。
1.同步是按照顺序执行的。
上面的代码会输出:
第一步
第二步
第三步
2.异步在执行时,不是顺序执行的,异步代码有时会被直接跳过。
上面的代码会输出:
第一步
第三步
要让上面的异步代码都执行,可以这样修改一下:
在第九行,新增time.Sleep
方法,字面意思是先睡1s,实际上是Go的调度程序,先暂停执行当前的协程(即main)一秒钟,在这个时间内调度程序会搜索看一下,是否有其他的协程未执行,如果有,会先执行它。在它执行完之后,再回到之前的协程,继续执行下去。所以最后会输出:
第一步
第三步
第二步
以上是我的一些理解,希望可以帮到你。