交替打印-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/") }

相关内容

热门资讯

2026版复盘!宝宝浙江辅助器... 2026版复盘!宝宝浙江辅助器(辅助)真是确实有辅助工具(有挂助手)1、宝宝浙江辅助器透视辅助软件激...
目前来看!雀友会广东潮汕辅助有... 目前来看!雀友会广东潮汕辅助有开挂(辅助)本来真的有辅助技巧(有挂讲解)1、下载好雀友会广东潮汕辅助...
2026版攻略!卡农免费辅助(... 2026版攻略!卡农免费辅助(辅助)切实真的是有辅助神器(真的有挂)1、游戏颠覆性的策略玩法,独创攻...
今年以来!微乐挖坑内购破解(辅... 今年以来!微乐挖坑内购破解(辅助)一贯是真的有辅助工具(有挂功能)1、不需要AI权限,帮助你快速的进...
方法辅助挂!雀神挂件价格开挂透... 方法辅助挂!雀神挂件价格开挂透视(辅助)切实真的有辅助插件(有挂详情)1、这是跨平台的雀神挂件价格开...
相较于以往!全民内蒙古辅助器(... 相较于以往!全民内蒙古辅助器(辅助)本来是有辅助方法(有挂存在)相较于以往!全民内蒙古辅助器(辅助)...
据了解!河洛杠次脚本开发(辅助... 据了解!河洛杠次脚本开发(辅助)一贯是有辅助工具(真的有挂)1、游戏颠覆性的策略玩法,独创攻略技巧玩...
不少玩家反映!科乐游戏辅助脚本... 不少玩家反映!科乐游戏辅助脚本视频(辅助)其实真的有辅助插件(发现有挂)1、科乐游戏辅助脚本视频脚本...
有了最新消息!三哥玩辅助(辅助... 有了最新消息!三哥玩辅助(辅助)一直确实有辅助教程(有挂方略)1、打开软件启动之后找到中间准星的标志...
软件辅助挂!九游破解辅助插件官... 软件辅助挂!九游破解辅助插件官网(辅助)都是是真的有辅助方法(有挂教程)1、上手简单,内置详细流程视...