优秀的编程知识分享平台

网站首页 > 技术文章 正文

Go语言编写的简单并发编程示例

nanyue 2024-12-01 01:43:49 技术文章 6 ℃

创建两个并发的goroutine,每个goroutine都会执行一些任务并输出结果:

package main

import (
	"fmt"
	"sync"
)

func main() {
	// 创建一个等待组,用于等待所有的goroutine完成
	var wg sync.WaitGroup
	// 设置等待组的计数器为2,表示有两个goroutine要等待
	wg.Add(2)

	// 启动第一个goroutine
	go func() {
		defer wg.Done() // 在goroutine执行完毕后通知等待组计数器减1

		// 执行一些任务
		for i := 1; i <= 5; i++ {
			fmt.Println("Goroutine 1:", i)
		}
	}()

	// 启动第二个goroutine
	go func() {
		defer wg.Done() // 在goroutine执行完毕后通知等待组计数器减1

		// 执行一些任务
		for i := 1; i <= 5; i++ {
			fmt.Println("Goroutine 2:", i)
		}
	}()

	// 等待所有的goroutine完成
	wg.Wait()

	fmt.Println("All goroutines completed.")
}

在上述示例中,我们使用sync.WaitGroup来等待所有的goroutine完成。在main函数中,首先创建了一个WaitGroup对象wg,并调用wg.Add(2)来设置等待组的计数器为2,表示有两个goroutine要等待。

然后,我们启动了两个goroutine,每个goroutine都执行一些任务,并在任务完成后通过defer wg.Done()通知等待组计数器减1。

最后,我们调用wg.Wait()来阻塞主goroutine,直到所有的goroutine都完成。一旦所有的goroutine都执行完毕,我们输出"All goroutines completed."。

这样就实现了一个简单的并发编程示例,两个goroutine并发执行任务。你可以根据自己的需求扩展和修改这个示例。

Tags:

最近发表
标签列表