• golang奇偶数交叉打印


    golang奇偶数交叉打印

    package main
    
    import (
    	"fmt"
    	"sync"
    )
    
    func main() {
    	// 定义打印数据
    	numberList := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    	// 定义两个channel用于互相通信
    	ch1 := make(chan bool)
    	ch2 := make(chan bool)
    	// 定义waitGroup实现同步
    	wg := &sync.WaitGroup{}
    	wg.Add(2)
    	go func() {
    		Print1(numberList, wg, ch1, ch2)
    	}()
    	go func() {
    		Print2(numberList, wg, ch1, ch2)
    	}()
    	wg.Wait()
    }
    
    func Print1(numberList []int, wg *sync.WaitGroup, ch1, ch2 chan bool) {
    	defer wg.Done()
    	for _, v := range numberList {
    		if v%2 != 0 {
    			fmt.Println("goroutine 1 printer:", v)
    			ch2 <- true
    			<-ch1
    		}
    	}
    }
    
    func Print2(numberList []int, wg *sync.WaitGroup, ch1, ch2 chan bool) {
    	defer wg.Done()
    	for _, v := range numberList {
    		if v%2 == 0 {
    			<-ch2
    			fmt.Println("goroutine 2 printer:", v)
    			ch1 <- true
    		}
    	}
    }
    
    【励志篇】: 古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
  • 相关阅读:
    js事件分类
    过3s弹出广告条,点叉号关闭
    js进阶
    js入门
    html
    R Markdown + Infinite Moon Reader + 编辑实时更新
    png转ico+windows图标+GIMP
    微生物+计算细胞倍增时间
    使用Mathjax网页插入公式
    Firefox+zoom+全局缩放比例
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/14817739.html
Copyright © 2020-2023  润新知