Go语言中主协程如何等待其他协程完成后再操作?

提问者:帅平 问题分类:面试刷题
Go语言中主协程如何等待其他协程完成后再操作?
2 个回答
ε小可爱з
ε小可爱з
使用通道
通道(channel)是 Go 语言中用于 goroutine 之间通信的机制。通过通道,主协程可以接收来自子协程的完成信号,从而知道何时继续执行。示例说明:
主协程创建一个通道,并启动多个子协程。
每个子协程在完成任务后向通道发送一个信号。
主协程通过 for range 或者固定次数的 for 循环接收这些信号,确保所有子协程都已完成。
发布于:4个月前 (12-25) IP属地:四川省
沐叶清风
沐叶清风
使用 sync.WaitGroup
sync.WaitGroup 是一个计数器,用于跟踪需要完成的任务数量。每个启动的 goroutine 应该调用 Add(1) 来增加计数器,当任务完成时调用 Done() 来减少计数器。主协程可以调用 Wait() 来阻塞,直到计数器归零,即所有任务都已完成。示例说明:
主协程创建一个 WaitGroup 实例,并为每个子协程调用 Add(1)。
每个子协程在完成任务后调用 Done()。
主协程调用 Wait(),等待所有子协程完成。
发布于:4个月前 (12-25) IP属地:四川省
我来回答