返回
Go 入门:从 goroutine 出发到并发
后端
2023-12-31 14:07:37
在 Go 编程语言中,goroutine 是并发编程的核心。本文将带您从 goroutine 的入门概念出发,逐步探索 Go 的并发编程特性。
goroutine 简介
goroutine 是一个轻量级的并发执行单元,它是 Go 语言中实现并发编程的基本构建块。每个 goroutine 都拥有自己的栈空间,并在单独的执行线程上运行。与线程相比,goroutine 的创建和销毁开销更小,资源消耗也更低。
创建 goroutine
创建 goroutine 的语法如下:
go func() {
// goroutine 的代码体
}
go
表示创建一个 goroutine,后面紧跟一个匿名函数。该函数将作为 goroutine 的入口点,在独立的线程上执行。
并发编程
goroutine 的主要作用是实现并发编程。并发是指多个任务同时执行,而并行是指多个任务在同一时刻执行。Go 语言通过 goroutine 提供了并发编程的支持,允许多个 goroutine 同时执行不同的任务。
例如,以下代码使用 goroutine 并发计算多个斐波那契数:
package main
import (
"fmt"
"time"
)
func main() {
start := time.Now()
// 创建 10 个 goroutine,分别计算斐波那契数列的前 100 项
for i := 0; i < 10; i++ {
go func(n int) {
result := fib(n)
fmt.Printf("斐波那契数列第 %d 项为 %d\n", n, result)
}(i)
}
// 等待所有 goroutine 完成
time.Sleep(1 * time.Second)
elapsed := time.Since(start)
fmt.Printf("并发计算斐波那契数耗时:%s\n", elapsed)
}
func fib(n int) int {
if n <= 1 {
return 1
}
return fib(n-1) + fib(n-2)
}
总结
goroutine 是 Go 语言中轻量级的并发执行单元,提供了实现并发编程的强大功能。通过创建 goroutine,我们可以同时执行多个任务,从而提高程序的效率和响应能力。本文介绍了 goroutine 的入门概念和使用方式,为进一步深入探索 Go 的并发编程特性奠定了基础。