go语言从例子开始之Example21.协程

Go 协程 在执行上来说是轻量级的线程。

golang使用协程用go关键字。后边正常调用函数。

Example:

package main

import "fmt"


func ak(str string){
    for i:=0; i<3; i++{
        fmt.Println(str, ":", i)
    }
}


//协程main中要注意,协程还没执行完main就退出了。
//换句话说就是main没有等待所有goroutine结束即退出。
func main(){
    ak("direct")

    go ak("goroutine")
    go ak("sk")


    //go异步运行,这里用Scanln等待,需要退出时,要工按键退出。
    var input string
    fmt.Scanln(&input)
    fmt.Println("done")

}

Result:

$ go run example.go
direct : 0
direct : 1
direct : 2
goroutine : 0
sk : 0
sk : 1
sk : 2
goroutine : 1
goroutine : 2

从结果可以看出,direct是阻塞输出。goroutine和sk是异步交替输出。

坐标: 上一个例子  下一个例子

原文地址:https://www.cnblogs.com/yhleng/p/11750759.html