开发者

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)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜