【go从入门到精通】精通并发编程-协程goroutine
package main
import (
"fmt"
"time"
)
// 定义一个简单的函数,用于模拟长时间运行的任务
func longRunningTask(taskName string) {
fmt.Printf("Task %s is running\n", taskName)
time.Sleep(2 * time.Second) // 模拟任务执行时间
fmt.Printf("Task %s is done\n", taskName)
}
func main() {
start := time.Now()
// 启动两个并发的goroutine执行长时间运行的任务
go longRunningTask("A") // 不等待这个任务完成,直接执行下一行代码
go longRunningTask("B") // 同上
// 主goroutine等待两个任务完成
time.Sleep(2 * time.Second) // 假设主goroutine也需要等待一段时间来处理其他任务
end := time.Now()
elapsed := end.Sub(start)
fmt.Printf("Total time taken: %.3f seconds\n", elapsed.Seconds())
}
这段代码启动了两个goroutine来执行longRunningTask
函数,每个任务模拟耗时2秒。主goroutine在启动了两个任务后等待了2秒,然后打印总的运行时间。这展示了Go语言中并发编程的基本用法。
评论已关闭