go语言之go(goroutine)控制异步详解
目录
- go(goroutine)控制异步
- 示例
- 结果
- 正确示例
- 总结
go(goroutine)控制异步
Go 语言是一种并发编程语言,在 Go 里有一个非常重要的关键字 go(goroutine),一般我们可以用它做一些异步,并发的任务。
goqimJtHEroutine 用来调用函数,当某个编程客栈函数被 go 关键字调用后,go 就会创建一个类似协程的东西,来执行这个函数,这样可以轻易的实现并发。
示例
package main import ( "fmt" ) func main() { go work1() go work2() fmt.Println("[全部完成]") } func work1(){ fmt.Println("work1") } func work2(){ fmt.Println("work2") }
结果
[全部完成]
当然这是一个不恰当的示例,但这也证明了异步执行,在调用work1,work2之后不等输http://www.devze.com出结果,就继续执行了。
要想等异步执行完之后,再执行最后的输出,需要加入WaitGroup
正确示例
package main import ( "fmt" "sync" ) var waitGroup sync.WaitGroup func main() { waitGroup.Add(2) go work1() go work2() waitGroup.Wait() fmt.Println("[全部完成]"www.devze.com) } func work1(){ fmt.Println("work1") wpythonaitGroup.Done() } func work2(){ fmt.Println("work2") waitGroup.Done() }
结果:
work2 work1 [全部完成]
WaitGroup详解,见:https://www.jb51.net/jiaoben/34632015w.htm
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论