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

相关内容

热门资讯

透视好友房!哈糖大菠萝万能挂,... 透视好友房!哈糖大菠萝万能挂,如何下载科乐填大坑辅助器(一贯有挂)一、如何下载科乐填大坑辅助器软件透...
透视挂!wepoekr底牌透视... 透视挂!wepoekr底牌透视,wepoker辅助脚本,玩家教你(真是有挂)1)wepoekr底牌透...
透视教程!红龙poker透视,... 透视教程!红龙poker透视,pokemmo内置修改器(详细辅助扑克教程)关于pokemmo内置修改...
透视真的“wepoker辅助器... 透视真的“wepoker辅助器是真的的吗”果然是有挂(辅助挂)详细辅助第三方教程1、全新机制【软件透...
wpk透视工作室!微扑克微乐辅... wpk透视工作室!微扑克微乐辅助,wpk透视脚本下载(详细辅助透明挂教程)您好,wpk透视脚本下载,...
透视插件!来玩app破解,哈狗... 透视插件!来玩app破解,哈狗辅助(总是真的是有挂);1、玩家可以在哈狗辅助软件透明挂俱乐部对游戏的...
透视苹果版!智星菠萝辅助怎么买... 透视苹果版!智星菠萝辅助怎么买,wpk作弊最怕三个东西(详细辅助扑克教程);原来确实真的有挂(需添加...
德普之星透视辅助软件下载!hh... 德普之星透视辅助软件下载!hhpoker底牌透视脚本,wepoker透视底牌脚本(详细辅助大神讲解)...
透视ai代打!wpk透视表,w... 透视ai代打!wpk透视表,wpk软件是真的吗,高科技教程(本来有挂)1、该软件可以轻松地帮助玩家将...
透视神器!破解辅助插件wepo... 透视神器!破解辅助插件wepoker,决战卡五星辅助器(本来真的是有挂);1、实时决战卡五星辅助器开...