欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > Golang 并发之 Goroutine

Golang 并发之 Goroutine

2025/5/23 9:17:01 来源:https://blog.csdn.net/qq_18668137/article/details/145056080  浏览:    关键词:Golang 并发之 Goroutine

Goroutine 是 Go 编程语言中的一个重要概念。它是 Go 语言实现并发的基础,可以简单地理解为 Go 语言中的轻量级线程

具体来说,Goroutine 有以下特点:

1.轻量级:

Goroutine 的创建和切换都非常快速,只需要几微秒。这与操作系统级别的线程相比要快得多。

2.并发性:

Goroutine 可以并发执行,意味着可以同时执行多个 Goroutine。Go 运行时会自动管理 Goroutine 的调度和执行。

3.独立性:

每个 Goroutine 都有自己的栈空间、程序计数器和其他必要的运行时数据结构。Goroutine 之间是相互独立的。

4.易用性:

创建 Goroutine 非常简单,只需要使用 go 关键字就可以了。

package mainimport ("fmt""sync""time"
)func main() {// 示例 1:并发性fmt.Println("示例 1: 并发性")var wg sync.WaitGroupwg.Add(2)// 启动两个 Goroutine 并发执行go func() {defer wg.Done()performTask("Goroutine 1")}()go func() {defer wg.Done()performTask("Goroutine 2")}()// 等待两个 Goroutine 执行完毕wg.Wait()fmt.Println("示例 1 完成")// 示例 2:独立性fmt.Println("\n示例 2: 独立性")var data int = 0go func() {data++fmt.Println("Goroutine 1 修改 data 为:", data)}()go func() {data--fmt.Println("Goroutine 2 修改 data 为:", data)}()// 给 Goroutine 一些时间执行time.Sleep(1 * time.Second)fmt.Println("main 函数中 data 的值:", data)// 示例 3:创建 Goroutinefmt.Println("\n示例 3: 创建 Goroutine")go func() {fmt.Println("这是一个新的 Goroutine")}()fmt.Println("这是 main 函数中的代码")time.Sleep(1 * time.Second)
}// 模拟一个耗时的任务
func performTask(name string) {fmt.Printf("开始执行 %s 任务\n", name)time.Sleep(2 * time.Second)fmt.Printf("%s 任务执行完毕\n", name)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词