返回

Go 入门:从 goroutine 出发到并发

后端

在 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 的并发编程特性奠定了基础。