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

相关内容

热门资讯

分享实测"aa po... 分享实测"aa poker有外挂吗"aapoker辅助工具存在吗(一贯是有挂)-哔哩哔哩1、金币登录...
一分钟了解(德州ai软件购买)... 《德州ai软件购买软件透明挂》是一款多人竞技的德州ai软件购买辅助透视游戏,你将微扑克对手来到同一个...
2分钟细说“wpk到底有没有外... 您好,wpk到底有没有外挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
黑科技能赢“wepoke透明黑... 黑科技能赢“wepoke透明黑科技”wepoke透明挂怎么识别(透明挂黑科技)一贯是真的有挂(有挂透...
实测揭晓"aapok... 实测揭晓"aapoker真的有猫腻吗"aapoker辅助工具使用教程(竟然真的是有挂)-哔哩哔哩;1...
普及知识(德州ai人工智能)德... 普及知识(德州ai人工智能)德州之星讲解(一直有挂)-哔哩哔哩1、玩家可以在德州ai人工智能软件透明...
我来教大家“wpk到底有没有外... 我来教大家“wpk到底有没有外挂”wpk俱乐部黑科技(WPk)原本是真的有挂(今日头条)-哔哩哔哩;...
黑科技挂“wepoke有没有挂... 黑科技挂“wepoke有没有挂”wepoke透视挂靠谱吗(透明挂)竟然真的有挂(有挂解惑)-哔哩哔哩...
一分钟了解"aa p... 一分钟了解"aa poker有外挂吗"aapoker俱乐部后台可以操作吗(切实存在有挂)-哔哩哔哩1...
免费测试版(德州ai辅助)德州... 免费测试版(德州ai辅助)德州线上ai辅助神器(一贯真的有挂)-哔哩哔哩这是由厦门游乐互动科技有限公...