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

相关内容

热门资讯

透视美元局!hhpoker外挂... 透视美元局!hhpoker外挂靠谱吗,hhpoker德州牛仔视频,详细教程(有挂辅助)1、任何hhp...
透视有挂!wpk透视辅助下载,... 透视有挂!wpk透视辅助下载,wpk辅助购买,扑克教程(真是有挂)1、打开软件启动之后找到中间准星的...
透视app!aapoker透视... 透视app!aapoker透视怎么用,aapoker辅助软件合法吗,教你攻略(有挂教程)1、点击下载...
透视免费!HH平台挂,hhpo... 透视免费!HH平台挂,hhpoker有没有作弊辅助,详细教程(有挂教程)1.hhpoker有没有作弊...
透视了解!wpk软件是真的吗,... 透视了解!wpk软件是真的吗,wpk作弊,普及教程(真是是有挂);wpk软件是真的吗是一种具有地方特...
透视好友!aapoker如何设... 透视好友!aapoker如何设置胜率,aapoker透视方法,可靠教程(有挂教程)1)aapoker...
透视ai代打!hhpkoer辅... 透视ai代打!hhpkoer辅助器,德州hhpoker脚本,实用技巧(有挂细节)透视ai代打!hhp...
透视透视!wpk官网下载链接,... 透视透视!wpk官网下载链接,wpk真的有透视嘛,2025新版总结(本来有挂)wpk真的有透视嘛辅助...
透视美元局!aapoker怎么... 透视美元局!aapoker怎么控制牌,aapoker怎么开辅助器,曝光教程(有挂辅助)一、aapok...
透视美元局!hhpoker辅助... 透视美元局!hhpoker辅助,hhpoker德州透视挂,AI教程(有挂介绍)1、上手简单,内置详细...