Go-并发编程-goroutine 和 channel(一)

2023-04-21 13:39:41 浏览数 (1)

Go是一种高性能,轻量级的编程语言,它内置了原生的并发支持,使得编写并发程序变得非常容易和高效。在Go中,使用goroutine和channel来实现并发编程。

Goroutine

Goroutine是Go语言的轻量级线程,它可以在一个程序中同时运行多个函数。Goroutine是由Go运行时系统调度的,它不需要开发者手动管理线程的创建和销毁。因此,Goroutine的开销非常小,可以轻松创建成千上万个并发任务。

要创建一个Goroutine,只需在函数调用前添加关键字go,例如:

代码语言:javascript复制
func main() {
    go func() {
        fmt.Println("Hello, World!")
    }()
    fmt.Println("Goodbye, World!")
}

在上面的示例中,我们使用go关键字创建了一个匿名函数的Goroutine,该函数打印“Hello, World!”。同时,主函数也打印“Goodbye, World!”。由于Goroutine和主函数是并发运行的,因此它们的输出顺序是不确定的。

Goroutine可以接受参数,并返回值。例如:

代码语言:javascript复制
func compute(a int, b int, c chan int) {
    c <- a   b
}

func main() {
    c := make(chan int)
    go compute(1, 2, c)
    result := <-c
    fmt.Println(result)
}

在上面的示例中,我们定义了一个compute函数,它接受两个整数和一个通道作为参数。在compute函数中,我们将a和b相加,并将结果发送到通道c中。在主函数中,我们创建了一个整型通道c,并使用go关键字启动了一个compute函数的Goroutine。然后,我们从通道c中接收计算结果,并将其打印出来。

go

0 人点赞