WaitGroup을 사용하여 Go에서 Goroutine을 동기화하는 방법은 무엇입니까?
WaitGroup
이 무엇인가요? WaitGroup
?
WaitGroup
是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。
如何使用 WaitGroup
使用 WaitGroup
的步骤如下:
WaitGroup
var wg sync.WaitGroup
Add()
当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1)
来增加计数器。
wg.Add(1) go func() { // goroutine 代码 wg.Done() }()
Done()
当 goroutine 执行完毕时,使用 WaitGroup.Done()
来减少计数器。
func() { // goroutine 代码 wg.Done() }
使用 WaitGroup.Wait()
来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。
wg.Wait()
实战案例
以下是一个示例,演示了如何使用 WaitGroup
WaitGroup
은 동시 작업을 조정하는 데 사용되는 Go의 내장 유형입니다. 이는 실행이 완료될 때까지 고루틴 그룹이 계속 실행되지 않도록 하는 데 사용할 수 있습니다. 🎜🎜🎜WaitGroup
사용 방법🎜🎜🎜WaitGroup
사용 단계는 다음과 같습니다. 🎜WaitGroup
만들기 🎜package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup // 创建三个并发 goroutine for i := 0; i < 3; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Printf("Goroutine %d complete\n", i) }(i) } // 等待所有 goroutine 完成执行 wg.Wait() // 输出:Goroutine 0 complete // 输出:Goroutine 1 complete // 输出:Goroutine 2 complete fmt.Println("All goroutines completed") }
Add()
사용🎜WaitGroup.Add(1)
를 사용하여 카운터를 증가시킵니다. 🎜rrreeeDone()
사용🎜WaitGroup을 사용하세요. ()
를 사용하여 카운터를 감소시킵니다. 🎜rrreeeWaitGroup.Wait()
를 사용하여 모든 연결될 때까지 현재 고루틴을 차단하세요. 고루틴 실행을 완료합니다. 🎜rrreee🎜🎜실용 사례🎜🎜🎜다음은 WaitGroup
을 사용하여 세 개의 동시 고루틴을 동기화하는 방법을 보여주는 예입니다. 🎜rrreee위 내용은 Go에서 WaitGroup을 사용하여 Goroutine을 동기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!