package demo_caculorimport ( "fmt" "sync" "time")func main() { //线程与协程 fmt.Println("程序开始") time.AfterFunc(3e9, func() { //此类似协程需要时间,必须注意主线程是否执行时间超过3秒 fmt.Println("程序执行") }) fmt.Println("程序结束") //通过阻塞主线程,配合协程 time.Sleep(4 * time.Second) //WaitGroup简介,等待组,实际上是一个计数器,只要计数器中有内容将一直阻塞 //WaitGroup存在于sync包中,WaitGroup只有三个方法 //Add(delta int)表示向内部计数器添加增量(delta),其中参数delta可以是负值 //Done()表示减少WaitGroup计数器的值,应该相当于在程序最后执行,相当于Add(-1) //Wait()表示阻塞直到WaitGroup计数器为0 var wg sync.WaitGroup wg.Add(5) for i := 0; i < 5; i++ { go func() { fmt.Println("执行") time.Sleep(time.Second) wg.Done() }() } wg.Wait()}
来源:https://www.cnblogs.com/chu-12345/p/11368752.html