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

相关内容

热门资讯

分享透视!hhpkoer辅助器... 分享透视!hhpkoer辅助器,hhpoker是正品吗,好像是有辅助神器(哔哩哔哩)1、玩家可以在线...
更值得关注的是!浙江宝宝游戏辅... 更值得关注的是!浙江宝宝游戏辅助工具,xpoker透视辅助(透视)其实真的是有辅助攻略(哔哩哔哩)1...
今年以来!微信途游四川辅助器,... 今年以来!微信途游四川辅助器,好友赣南新版本脚本(一贯真的有插件)-哔哩哔哩1、微信途游四川辅助器脚...
据文件显示"拱趴游戏... 据文件显示"拱趴游戏破解器"wepoker俱乐部辅助器(总是有辅助工具)-哔哩哔哩1、玩家可以在we...
专业透视!hhpoker透视工... 专业透视!hhpoker透视工具,模拟器打开hhpoker,好像是有辅助脚本(哔哩哔哩)1、破解器简...
据玩家消息!微信小程序微乐辅助... 据玩家消息!微信小程序微乐辅助器下载,wepoker透视脚本免费下载pc(透视)真是存在有辅助脚本(...
据玩家消息!抚州麻将牌牌局修改... 据玩家消息!抚州麻将牌牌局修改器,川娱竞技血战辅助(总是有挂修改器)-哔哩哔哩1、抚州麻将牌牌局修改...
有消息称"aapok... 有消息称"aapoker透视插件"来玩app破解(好像有辅助下载)-哔哩哔哩;1、起透看视 aapo...
辅助透视!德普之星怎么设置埋牌... 辅助透视!德普之星怎么设置埋牌,德普之星私人局辅助器,竟然是有辅助攻略(哔哩哔哩)1、让任何用户在无...
做出回应!家乡大二有没有辅助,... 做出回应!家乡大二有没有辅助,哈糖大菠萝能开挂吗(透视)切实是有辅助插件(哔哩哔哩)1、哈糖大菠萝能...