Go-并发编程-创建 goroutine

2023-04-21 13:42:25 浏览数 (1)

Go语言是一门天生支持并发编程的语言,其中最重要的特性之一就是goroutine(协程)。Goroutine是轻量级的执行线程,它由Go语言运行时系统管理,并由go关键字创建。

使用go关键字创建goroutine非常简单,只需要在函数或方法前面加上go关键字即可。例如:

代码语言:javascript复制
func hello() {
    fmt.Println("Hello")
}

func main() {
    go hello()
    fmt.Println("World")
}

在上面的示例中,我们定义了一个hello函数,它会打印出“Hello”。然后,在主函数中,我们使用go关键字启动了一个hello函数的goroutine,并打印出“World”。

由于hello函数的goroutine是并发运行的,因此它和主函数是同时运行的。在主函数中,我们先打印了“World”,然后才启动了hello函数的goroutine。因此,在输出中,“World”会先打印出来,而“Hello”会在其后面打印出来。

以下是另一个使用go关键字创建goroutine的示例:

代码语言:javascript复制
func printNumbers() {
    for i := 1; i <= 10; i   {
        fmt.Print(i, " ")
    }
}

func main() {
    go printNumbers()
    fmt.Println("Waiting for goroutine to finish...")
    time.Sleep(time.Second)
}

在上面的示例中,我们定义了一个printNumbers函数,它会打印出1到10的数字。然后,在主函数中,我们使用go关键字启动了一个printNumbers函数的goroutine,并打印出“Waiting for goroutine to finish...”。为了确保goroutine有足够的时间打印所有数字,我们使用time.Sleep函数暂停了1秒钟。

由于printNumbers函数的goroutine是并发运行的,因此它和主函数是同时运行的。在主函数中,我们先打印了“Waiting for goroutine to finish...”,然后才启动了printNumbers函数的goroutine。因此,在输出中,我们会先看到“Waiting for goroutine to finish...”,然后才会看到数字序列。

go

0 人点赞