Go-并发编程-goroutine 和 channel(一)
导读:Go是一种高性能,轻量级的编程语言,它内置了原生的并发支持,使得编写并发程序变得非常容易和高效。在Go中,使用goroutine和channel来实现并发编程。GoroutineGoroutine是Go语言的轻量级线程,它可以在一个程序中同...
Go是一种高性能,轻量级的编程语言,它内置了原生的并发支持,使得编写并发程序变得非常容易和高效。在Go中,使用goroutine和channel来实现并发编程。
Goroutine
Goroutine是Go语言的轻量级线程,它可以在一个程序中同时运行多个函数。Goroutine是由Go运行时系统调度的,它不需要开发者手动管理线程的创建和销毁。因此,Goroutine的开销非常小,可以轻松创建成千上万个并发任务。
要创建一个Goroutine,只需在函数调用前添加关键字go,例如:
func main() {
go func() {
fmt.Println("Hello, World!")
}
()
fmt.Println("Goodbye, World!")
}
在上面的示例中,我们使用go关键字创建了一个匿名函数的Goroutine,该函数打印“Hello, World!”。同时,主函数也打印“Goodbye, World!”。由于Goroutine和主函数是并发运行的,因此它们的输出顺序是不确定的。
Goroutine可以接受参数,并返回值。例如:
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中接收计算结果,并将其打印出来。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Go-并发编程-goroutine 和 channel(一)
本文地址: https://pptw.com/jishu/9988.html