go等待N个线程完成操作总结
发布日期:2021-05-09 01:17:57 浏览次数:9 分类:博客文章

本文共 493 字,大约阅读时间需要 1 分钟。

第一种,基于原生带缓存的channel

package mainimport "fmt"func main() {	done := make(chan int, 10)	for i := 0; i < cap(done); i++ {		go func(j int) {			fmt.Println("你好,世界" + fmt.Sprintf("%v", j))			done <- 1		}(i)	}	//等待N个后台线程完成	for i := 0; i < cap(done); i++ {		<-done	}}

  第二种,通过使用使用sync.WaitGroup来等待

package mainimport (	"sync"	"fmt")func main() {	var wg sync.WaitGroup	for i := 0; i < 10; i++ {		wg.Add(1)		go func(j int) {			fmt.Println("你好,世界" + fmt.Sprintf("%v", j))			wg.Done()		}(i)	}	wg.Wait()}

  

 

上一篇:go使用rpc
下一篇:go捕获Ctrl+C信号

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年03月29日 01时02分28秒