← 返回主页

第8课: 并发编程基础 - Goroutines

什么是 Goroutine?

Goroutine 是 Go 的轻量级线程,由 Go 运行时管理。

创建 Goroutine

func sayHello() {
    fmt.Println("Hello from goroutine!")
}

func main() {
    go sayHello() // 启动 goroutine
    time.Sleep(time.Second)
}

匿名函数 Goroutine

go func() {
    fmt.Println("匿名 goroutine")
}()

// 带参数
go func(msg string) {
    fmt.Println(msg)
}("Hello")

WaitGroup

var wg sync.WaitGroup

for i := 0; i < 5; i++ {
    wg.Add(1)
    go func(n int) {
        defer wg.Done()
        fmt.Println("Goroutine", n)
    }(i)
}

wg.Wait()

实践示例

func worker(id int, wg *sync.WaitGroup) {
    defer wg.Done()
    fmt.Printf("Worker %d 开始\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Worker %d 完成\n", id)
}

func main() {
    var wg sync.WaitGroup
    for i := 1; i <= 3; i++ {
        wg.Add(1)
        go worker(i, &wg)
    }
    wg.Wait()
}