欢迎光临
我们一直在努力

初当Go学长第十天

今天学习了协程的概念(感觉应该像是并发的意思)

Goroutine是Go运行时管理的轻量级线程,在Go中,开启一个协程是非常简单的。

Var wait waitGroup的用法:

用全局变量:

package main

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

var wait sync.WaitGroup

func shopping(name string) {
fmt.Printf("%s 开始购物\\n", name)
//时间延时1s
time.Sleep(1 * time.Second)
fmt.Printf("%s 购物结束\\n", name)
wait.Done()
}

// 协程
func main() {
//拿到现在的时间
startTime := time.Now()
//现在的模式是购物接力
// shopping("瞪眼")
// shopping("小丸音")
// shopping("瞪眼小丸音")
wait.Add(3)
//加上go的关键字,可以让他们同时进行,主线程结束,协程函数也会跟着结束
go shopping("瞪眼")
go shopping("小丸音")
go shopping("瞪眼小丸音")
wait.Wait()
fmt.Println("购买完成", time.Since(startTime))
}

用局部变量:

package main

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

func shopping(name string, wait *sync.WaitGroup) {
fmt.Printf("%s 开始购物\\n", name)
//时间延时1s
time.Sleep(1 * time.Second)
fmt.Printf("%s 购物结束\\n", name)
wait.Done()
}

// 协程
func main() {
var wait sync.WaitGroup
//拿到现在的时间
startTime := time.Now()
//现在的模式是购物接力
// shopping("瞪眼")
// shopping("小丸音")
// shopping("瞪眼小丸音")
wait.Add(3)
//加上go的关键字,可以让他们同时进行,主线程结束,协程函数也会跟着结束
go shopping("瞪眼", &wait)
go shopping("小丸音", &wait)
go shopping("瞪眼小丸音", &wait)
wait.Wait()
fmt.Println("购买完成", time.Since(startTime))
}

以上记录纯属自身学习,欢迎大家给出意见,一起进步!

赞(0)
未经允许不得转载:171主机测评 » 初当Go学长第十天
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址