golang自学之路(goroutine之一)7

package main

import (
	"sync"
	"log"
	"time"
)

func main() {
	//每个三秒总共需要9秒
	 doSomeing1(4)
	 doSomeing1(5)
	 doSomeing1(6)

	 //3个goroutine同时进行,只需要3秒
	var wg sync.WaitGroup
	wg.Add(3)
	go doSomeing(1, &wg)
	go doSomeing(2, &wg)
	go doSomeing(3, &wg)
	//等待三个执行完主程序才退出
	wg.Wait()
}

func doSomeing1(jopId int) {
	log.Printf("开始 jop{%d} \n", jopId)
	time.Sleep(time.Second * 3)
	log.Printf("结束 jop{%d} \n", jopId)
}

func doSomeing(jopId int, wg *sync.WaitGroup) {
	log.Printf("开始 jop{%d} \n", jopId)
	time.Sleep(time.Second * 3)
	log.Printf("结束 jop{%d} \n", jopId)
	wg.Done()
}

 

你可能感兴趣的:(go)