美文网首页
07-并发-03-携程同步

07-并发-03-携程同步

作者: 玄德公笔记 | 来源:发表于2021-11-21 14:41 被阅读0次

1. 代码结构

在这里插入图片描述

2 gorotine.go

package gorotine

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

//定义WG,用sync中的函数来同步数据
var WG sync.WaitGroup

func Read()  {
    for i :=0 ; i<=10 ; i++ {
        WG.Add(1)
    }
}

func Write() {
    for i :=0 ; i <= 10 ; i++ {
        time.Sleep(time.Second * 1)
        fmt.Println("Done >",i)
        WG.Done()
    }
}

说明:
Add(n) 把计数器设置为n
Done() 每次把计数器-1
wait() 会阻塞代码的运行,直到计数器地值减为0
以上可知:
如果我把n 设置成2,那么我在下文main.go中可以打开两个协程执行WG.Write()
如果我把n仍设置成1,而在main.go中坚持打开两个协程执行WG.Write(),那写到5就报错了。除非我把Write()中的循环条件写成i=0;i<=21;i++

3 main.go

package main

import (
    "814/gorotine"
    "fmt"
    "time"
)

func main () {
    //主线程来读(上文可知,此时WG的计数器被设置为1)
    gorotine.Read()
    //开启一个协程来写(写完后计数器被-1,为0)
    go gorotine.Write()
    //主线程等待协程写完(阻塞代码,知道计数器为0)
    gorotine.WG.Wait()
    //协程写完后主线程打印一个标记
    fmt.Println("All dome")
    //主线程等两秒后退出
    time.Sleep(time.Second * 2 )
}

4. 输出

Done > 0
Done > 1
Done > 2
Done > 3
Done > 4
Done > 5
Done > 6
Done > 7
Done > 8
Done > 9
Done > 10
All dome

Process finished with the exit code 0

相关文章

  • 07-并发-03-携程同步

    1. 代码结构 2 gorotine.go 说明:Add(n) 把计数器设置为nDone() 每次把计数器-1wa...

  • 07-携程-01-并发

    1. 语法 2. 示例 1)并发状态 结果 2)如果不是并发的状态 输出: 说明:main()中,前边执行完5次打...

  • 07-携程-02-携程通讯

    1. 示例说明 1.1 逻辑 两个携程: 一个调用写函数向通道中写 一个调用读函数从通道中读。两个通道: 一个接收...

  • Golang并发编程套路

    同步机制 由于并发编程没法直接保证协程的执行顺序,因此需要一个同步的机制来进行同步通信,以确保各个协程中的任务处于...

  • Kotlin学习笔记之 31 协程挂起函数的组合

    首发于公众号: DSGtalk1989 31.协程挂起函数的组合 同步与并发通常情况下,协程中的挂起函数都是同步执...

  • 吸引力法则

    打开混沌之门 -01-六大技巧 -02-肢体 -03-表情 -04-声音 -05-装扮 -06-性感 -07-社交...

  • 三行情书 · 给未来的自己

    寄一份信,地址未来,收件人自己 -01- -02- -03- -04- -05- -06- -07- -08- -...

  • GO语言入门第五节 Go语言的并发编程(一)

    写在前面 因为并发相关的东西又多又长。。所以这个专题会分成多篇博客来写啦。。本篇文章包括 携程机制,携程和线程的区...

  • 三行情书 · 三生情事

    想给的故事,用一生来写. -01- -02- -03- -04- -05- -06- -07- -08- -09-...

  • dya23-CSS属性

    01-选择器的权重 02-浮动 03-文字环绕 04-清除浮动 05-display 06-定位 07-盒子模型 ...

网友评论

      本文标题:07-并发-03-携程同步

      本文链接:https://www.haomeiwen.com/subject/aabhtrtx.html