golang异步是什么
时间:2022-12-28 10:54
在golang中,异步是指不按照代码顺序执行,一个异步过程的执行将不再与原有的序列有顺序关系;在异步中,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。golang异步主要是由协程(goroutine)实现的;goroutine用来调用函数,当某个函数被go关键字调用后,go就会创建一个类似协程的东西,来执行这个函数,这样可以轻易的实现并发。 本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。 异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。 简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。 另一种解释就是: 给你两个容器,一个叫同步,一个叫异步,把要执行的代码分别分到同步和异步里面,先执行同步同时异步待编译,等同步执行完后执行异步里面的代码。 Go的异步主要是由协程(goroutine)实现的。协程相对于线程来说,占用的内存更少,更轻量级,这也是Go在性能上的优势。 Go 语言是一种并发编程语言,在 Go 里有一个非常重要的关键字 go(goroutine),一般我们可以用它做一些异步,并发的任务。 示例: 结果: 当然这是一个不恰当的示例,但这也证明了异步执行,在调用work1,work2之后不等输出结果,就继续执行了。 正确示例: 结果: 【相关推荐:Go视频教程、编程教学】 以上就是golang异步是什么的详细内容,更多请关注gxlsystem.com其它相关文章!异步是什么?
golang怎么实现异步
goroutine 用来调用函数,当某个函数被 go 关键字调用后,go 就会创建一个类似协程的东西,来执行这个函数,这样可以轻易的实现并发。package main
import (
"fmt"
)
func main() {
go work1()
go work2()
fmt.Println("[全部完成]")
}
func work1(){
fmt.Println("work1")
}
func work2(){
fmt.Println("work2")
}
[全部完成]
要想等异步执行完之后,再执行最后的输出,需要加入WaitGrouppackage main
import (
"fmt"
"sync"
)
var waitGroup sync.WaitGroup
func main() {
waitGroup.Add(2)
go work1()
go work2()
waitGroup.Wait()
fmt.Println("[全部完成]")
}
func work1(){
fmt.Println("work1")
waitGroup.Done()
}
func work2(){
fmt.Println("work2")
waitGroup.Done()
}
work2
work1
[全部完成]