zoukankan      html  css  js  c++  java
  • wg sync.WaitGroup执行顺序

    
    
    func main1(){
    	//runtime.GOMAXPROCS(1)
    	for i :=0 ; i<10 ;i++{
    		go fmt.Println(i)  //启动10个goroutine 来计算
    	}
    	time.Sleep(1*time.Second)
    }
    
    func main(){
    	/// wg sync.WaitGroup执行顺序是最后一个先执行,以下结果为e,a,b,c,d
    	//不使用wg时结果为a,b,c,d,e
    	var wg sync.WaitGroup
    	wg.Add(5)
    	go func() {
    
    		fmt.Println("a")
    		wg.Done()
    	}()
    	go func() {
    		defer wg.Done()
    		fmt.Println("b")
    	}()
    	go func() {
    		defer wg.Done()
    		fmt.Println("c")
    	}()
    	go func() {
    		defer wg.Done()
    		fmt.Println("d")
    	}()
    	go func() {
    		defer wg.Done()
    		fmt.Println("e")
    	}()
    	//wg.Wait()
    	//time.Sleep(1*time.Second)
    	wg.Wait()
    
    }
    
    // 例子3
    func cal(pre string, wg *sync.WaitGroup){
    	defer wg.Done()
    	for i:=0;i<10 ;i++  {
    		fmt.Printf("prefix:%s,%d
    ", pre, i)
    		time.Sleep(1*time.Second)
    	}
    }
    func main(){
    	runtime.GOMAXPROCS(1)
    	var wg sync.WaitGroup
    	wg.Add(2)
    	go cal("a", &wg)
    	go cal("b", &wg)
    	wg.Wait()
    	fmt.Println("end...")
    }
    ////
    prefix:b,0
    prefix:a,0
    prefix:a,1
    prefix:b,1
    prefix:b,2
    prefix:a,2
    prefix:a,3
    prefix:b,3
    ...
    
    `////////////////`
    func st(){
    	ch := make(chan int, 10)
    	ch <- 3
    	close(ch)
    	//data := <- ch
    	//fmt.Println(data)
    	fmt.Println("ssssssss")
    	//for d := range ch{
    	//	fmt.Println(d)
    	//}
    	//return
    	for {
    		data := <- ch
    		fmt.Println(data)
    		time.Sleep(1*time.Second)
    	}
    	//limiter := time.Tick(time.Second*1)
    	return
    	//var sx rune
    	//sx = 'd'
    	fmt.Println("start..")
    	var wg sync.WaitGroup
    	wg.Add(2)
    	go func() {
    		defer wg.Done()
    		for count :=0; count <3;count++  {
    			for a :='a'; a< 'a' + 26;a++{
    				fmt.Printf("%c", a)
    			}
    
    			fmt.Println()
    		}
    	}()
    	fmt.Println("middle..")
    	go func() {
    		defer wg.Done()
    		for count:=0;count<3;count++{
    			for a:='A';a<'A'+26;a++{
    				fmt.Printf("%c", a)
    			}
    			fmt.Println()
    			time.Sleep(1*time.Second)
    		}
    	}()
    	wg.Wait()
    	fmt.Println("END..")
    }
    
    
  • 相关阅读:
    1337语言
    BEEF实战全记录
    MySQL字符集编码设置与PHP显示乱码的解决办法
    设置MySql5.5数据库的字符编码为UTF8,解决中文乱码问题
    如何在BeEF中使用metasploit颠覆你的浏览器
    xss窃取cookie测试
    xss测试代码
    'or'='or'经典漏洞代码分析
    mysql注入漏洞测试网页
    ipc$入侵
  • 原文地址:https://www.cnblogs.com/lajiao/p/12637191.html
Copyright © 2011-2022 走看看