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

相关内容

热门资讯

玩家必看教程!透视挂!新久情a... 玩家必看教程!透视挂!新久情ai智能透视挂神器app,新久情外卦神器软件妙招(有辅助挂解惑);新久情...
攻略讲解开挂!千众部落ai智能... 您好,千众部落这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在这款游戏...
玩家必备科技!辅助挂!牛欢喜a... 玩家必备科技!辅助挂!牛欢喜ai智能辅助挂插件app,牛欢喜确实真的有挂手筋(有辅助挂方式)是一款可...
教你攻略辅助器!星远互娱3ai... 教你攻略辅助器!星远互娱3ai智能辅助器软件app,星远互娱3破解软件要领(有辅助挂解惑);星远互娱...
一起来探讨开挂!闲玩娱乐葫芦鱼... 一起来探讨开挂!闲玩娱乐葫芦鱼ai智能开挂助手app,闲玩娱乐葫芦鱼到底有挂吗指南(有辅助挂助手);...
切实教程透视挂!新河马互娱ai... 您好:新河马互娱这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好...
新版2025教程辅助挂!新漫游... 新版2025教程辅助挂!新漫游ai智能辅助挂平台app,新漫游有挂么辅助窍要(有辅助挂详细);1、新...
分享一款辅助!火爆欢盈娱乐ai... 分享一款辅助!火爆欢盈娱乐ai智能辅助软件app,火爆欢盈娱乐到底有挂吗法门(有辅助挂助手);亲,有...
让我来分享经验透视挂!红桃互娱... 让我来分享经验透视挂!红桃互娱ai智能透视挂脚本app,红桃互娱透视辅助课程(有辅助挂规律);红桃互...
玩家必备科普辅助!超稳互娱ai... 玩家必备科普辅助!超稳互娱ai智能辅助脚本app,超稳互娱透视挂软件法子(有辅助挂工具);1、点击下...