网站地图    收藏   

主页 > 后端 > Golang >

go语言协程与并发代码实列

来源:未知    时间:2019-09-24 14:19 作者:小飞侠 阅读:

[导读] 话不多说直接上代码 没加协程之前运行结果 没协程之前代码: packagemainimport(fmttime)funcfn1(){time.Sleep(1*time.Second)fmt.Println(暂停1秒)}funcfn2(){time.Sleep(2*time.Second)fmt.Println(暂停2秒)}funcmain(){b...

话不多说直接上代码

没加协程之前运行结果

image.png

没协程之前代码:

package main

import (
   "fmt"
   "time"
)

func fn1()  {
   time.Sleep(1*time.Second)
   fmt.Println("暂停1秒")
}

func fn2(){
   time.Sleep(2*time.Second)
   fmt.Println("暂停2秒")
}

func main()  {
   begin := time.Now()
   
   fmt.Println("现在",begin)

   for i := 0; i < 5; i++ {
       fn1()
      fn2()
   }
   end := time.Now()
   fmt.Println("总共用时:",end.Sub(begin))
}


加了协程的运行结果:

image.png

加了协程的代码:

package main

import (
   "fmt"
   "time"
   "sync"
)

var wt sync.WaitGroup


func fn1()  {
   time.Sleep(1*time.Second)
   fmt.Println("暂停1秒")
   wt.Done()
}

func fn2(){
   time.Sleep(2*time.Second)
   fmt.Println("暂停2秒")
   wt.Done()
}

func main()  {
   begin := time.Now()
   
   fmt.Println("现在",begin)

   for i := 0; i < 5; i++ {
      go fn1()
      wt.Add(1)
      go fn2()
      wt.Add(1)
   }
   end := time.Now()

   wt.Wait()

   fmt.Println("总共用时:",end.Sub(begin))

}


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论