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

相关内容

热门资讯

1分钟了解(天天黄石麻将)外挂... 1分钟了解(天天黄石麻将)外挂辅助下载(透视)曝光教程(2023已更新)(哔哩哔哩);1、超多福利:...
第七分钟透视!wepoker正... 第七分钟透视!wepoker正确养号方法,智星菠萝透视,高科技教程(有挂规律)-哔哩哔哩1、下载好w...
十分钟了解“越乡游辅助器”详细... 【福星临门,好运相随】;十分钟了解“越乡游辅助器”详细透视开挂辅助神器-哔哩哔哩;暗藏猫腻,小编详细...
第七分钟科普!xpoker辅助... 第七分钟科普!xpoker辅助助手,aapoker辅助插件工具下载,2025新版教程(有挂方法)-哔...
八分钟了解“广西友玩修改器”详... 八分钟了解“广西友玩修改器”详细透视开挂辅助教程-哔哩哔哩;1、超多福利:超高返利,海量正版游戏,广...
两分钟了解(同乡互娱)外挂辅助... 两分钟了解(同乡互娱)外挂辅助神器(透视)新2025教程(2022已更新)(哔哩哔哩);是一款可以让...
七分钟理解!哈糖大菠萝辅助器,... 七分钟理解!哈糖大菠萝辅助器,aapoker透视方法,教你攻略(有挂功能)-哔哩哔哩所有人都在同一条...
七分钟了解“新西楚辅助器”详细... 七分钟了解“新西楚辅助器”详细透视开挂辅助挂-哔哩哔哩;新西楚辅助器免费下载原版,在新西楚辅助器软件...
第五分钟了解(tudoupin... 第五分钟了解(tudoupingwz)外挂透明挂辅助助手(透视)技巧教程(2026已更新)(哔哩哔哩...
第六分钟了解“余干六副辅助”详... 第六分钟了解“余干六副辅助”详细透视开挂辅助脚本-哔哩哔哩;是一款可以让一直输的玩家,快速成为一个“...