Go语言并发编程精髓:Goroutines与Channels深度解析
package main
import (
"fmt"
"time"
)
// 定义一个简单的函数,用于模拟长时间运行的任务
func longRunningTask(id int, exitChan chan bool) {
// 模拟长时间运行的操作
time.Sleep(2 * time.Second)
fmt.Printf("任务 %d 完成。\n", id)
// 任务完成后,向通道发送一个消息以通知主程序
exitChan <- true
}
func main() {
// 创建一个通道,用于任务完成后通知主程序
exitChan := make(chan bool)
// 创建并运行多个goroutines
for i := 1; i <= 3; i++ {
go longRunningTask(i, exitChan)
}
// 等待所有任务完成
for i := 1; i <= 3; i++ {
<-exitChan
}
fmt.Println("所有任务已完成。")
}
这段代码创建了一个简单的模型,用于并发运行多个长时间任务的goroutines。每个任务在完成后,都会通过一个channel发送一个消息,主程序通过监听这个channel来确定所有goroutine何时结束。这是Go语言中实现并发编程的一个常见模式。
评论已关闭