交替打印-GO
创始人
2025-01-15 05:03:35
0

1 两个channel 版本

package main  import ("fmt" 	   "sync")  var wg sync.WaitGroup var c1 chan int var c2 chan int  func A(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		<-c1 		fmt.Println(2*i) 		c2<-1            //牵引协程 	} } func B(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		<-c2 		fmt.Println(2*i+1) 		c1<-1 	} } func main () { 	wg = sync.WaitGroup{}  //初始化 	c1 = make(chan int, 1)  //有缓存,不然会死锁 	c2 = make(chan int) 	wg.Add(2) 	 	go A()   //协程执行函数 	go B() 	 	c1<-1      //启动协程 	wg.Wait() 	 	fmt.Println("hello https://tool.lu/") } 

无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。
这种类型的通道要求发送 goroutine 和接收 goroutine同时准备好,才能完成发送和接收操作。

如果都使用无缓冲通道,需要小修一下B()函数,避免死锁。
package main  import ("fmt" 	   "sync")  var wg sync.WaitGroup var c1 chan int var c2 chan int  func A(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		<-c1 		fmt.Println(2*i) 		c2<-1 	} } func B(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		<-c2 		fmt.Println(2*i+1) 		if i < 9 {   //临结束时候,不再写入 			c1<-1 		} 	} } func main () { 	wg = sync.WaitGroup{} 	c1 = make(chan int) 	c2 = make(chan int) 	wg.Add(2) 	 	go A() 	go B() 	 	c1<-1 	wg.Wait() 	 	 	fmt.Println("hello https://tool.lu/") } 

2  1个通道版本

  • 奇偶打印条件过滤
  • 管道自牵引
package main  import ("fmt" 	   "sync")  var wg sync.WaitGroup var c1 chan int  func A(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		<-c1 		if i%2 == 0 { 			fmt.Println(i) 		} 	} } func B(){ 	defer wg.Done() 	for i:=0;i<10;i++ { 		c1<-1 		if i%2 == 1 { 			fmt.Println(i) 		} 	} } func main () { 	wg = sync.WaitGroup{} 	c1 = make(chan int) 	wg.Add(2)  	go A() 	go B()  	wg.Wait()  	fmt.Println("hello https://tool.lu/") }

3 不使用 channel

package main  import ("fmt" 	   "sync")  var wg sync.WaitGroup var i int  func A(){ 	defer wg.Done() 	for ;i<10; {  		if i%2 == 0 { 			fmt.Println(i) 			i++ 		} 	} } func B(){ 	defer wg.Done() 	for ;i<10; {  		if i%2 == 1 { 			fmt.Println(i) 			i++ 		} 	} } func main () { 	wg = sync.WaitGroup{} 	i = 0 	wg.Add(2)  	go A() 	go B()  	wg.Wait()  	fmt.Println("hello https://tool.lu/") }

相关内容

热门资讯

第九分钟辅助!天天爱柳州辅助器... 天天爱柳州辅助器是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微...
热门推荐!微信小程序蜀山辅助器... 热门推荐!微信小程序蜀山辅助器免费下载(辅助)外挂辅助开挂插件(有挂秘诀)-哔哩哔哩;最新版2026...
第4分钟普及!奇迹陕西辅助器(... 第4分钟普及!奇迹陕西辅助器(透视)原来真的是有挂脚本(推荐开挂软件);奇迹陕西辅助器免费下载原版,...
第八分钟讲解!越乡游金花辅助,... 第八分钟讲解!越乡游金花辅助,九酷众游辅助,细节方法(有挂实锤)-哔哩哔哩1、下载安装好越乡游金花辅...
透视软件!浙江宝宝游戏辅助工具... 透视软件!浙江宝宝游戏辅助工具(辅助)外挂开挂辅助插件(了解有挂)-哔哩哔哩;是一款可以让一直输的玩...
第5分钟发现!桃乐甘肃麻将下载... 《第5分钟发现!桃乐甘肃麻将下载辅助器(辅助)原来有挂软件(必看开挂工具)》 桃乐甘肃麻将下载辅助器...
第8分钟了解!河洛刚次辅助,温... 第8分钟了解!河洛刚次辅助,温州茶苑辅助软件,详细教程(有挂攻略)-哔哩哔哩;无需打开直接搜索加薇1...
热点讨论!新二号辅助软件下载(... 热点讨论!新二号辅助软件下载(辅助)外挂辅助开挂软件(有挂教程)-哔哩哔哩;是一款可以让一直输的玩家...
8分钟解说!网易亲友圈辅助(开... 8分钟解说!网易亲友圈辅助(开挂)原来有挂平台(必看开挂安装);小薇(透视辅助)致您一封信;亲爱网易...
第5分钟开挂!如何在哈灵上辅助... 第5分钟开挂!如何在哈灵上辅助,决战卡五星辅助看牌器,解说技巧(有挂方略)-哔哩哔哩 了解更多开挂安...