当前位置: 技术文章>> go中的goroutine详细介绍与代码示例

文章标题:go中的goroutine详细介绍与代码示例
  • 文章分类: 后端
  • 10778 阅读
文章标签: go go基础

Goroutine是Go语言中的轻量级线程,由Go运行时环境(Goroutine Scheduler)进行调度。相比于传统的线程,Goroutine更加轻量级,一个Go程序可以同时启动成千上万个Goroutine,而不会对系统产生太大的压力。

在Go语言中,使用关键字"go"来启动一个Goroutine。当一个函数调用被go关键字修饰时,该函数会在一个新的Goroutine中异步执行。Goroutine的启动和销毁都非常快速,因此可以在程序中频繁地使用go关键字来创建Goroutine。

下面是一个简单的示例代码,展示了如何在Go中使用Goroutine:


package main



import (

"fmt"  

"time"  

)



func main() {

go count("goroutine") // 在一个新的Goroutine中执行count函数  

fmt.Println("main goroutine") // 打印主Goroutine的输出  

time.Sleep(time.Second) // 等待一段时间,以确保Goroutine有足够的时间执行完成  

}



func count(name string) {

for i := 0; i < 5; i++ {

fmt.Println(name, ":", i) // 打印该Goroutine的输出  

time.Sleep(50 * time.Millisecond) // 模拟一些耗时的操作  

}

}

在上面的代码中,我们使用go关键字启动了一个新的Goroutine来执行count函数。在主Goroutine中,我们打印了一条消息("main goroutine"),然后等待一段时间以确保Goroutine有足够的时间执行完成。在count函数中,我们使用一个循环打印了5次消息,并使用time.Sleep函数模拟了一些耗时的操作。

运行上面的代码,你会看到"main goroutine"被首先打印出来,然后是"goroutine : 0"、"goroutine : 1"等消息交替输出。这表明主Goroutine和count函数在不同的Goroutine中并发执行。


推荐文章