WaitGroup

add与done只是用来统计数量的  done减为0的时候就告诉wait结束

wait只是用来堵塞主函数的  当协程数为0时候结束

有了它我们不用写time.Sleep或者<-channelname了

package mainimport ("fmt""sync"
)var waitgroup sync.WaitGroupfunc Afunction(shownum int) {fmt.Println(shownum)waitgroup.Done() //任务完成,将任务队列中的任务数量-1,其实.Done就是.Add(-1)
}func main() {for i := 0; i < 6; i++ {waitgroup.Add(1) //每创建一个goroutine,就把任务队列中任务的数量+1go Afunction(i)}waitgroup.Wait() //.Wait()这里会发生阻塞,直到队列中所有的任务结束就会解除阻塞
}// 5
// 3
// 2
// 0
// 1
// 4

Go的sync.WaitGroup(二):WaitGroup让主程序与协程全部都执行 并且全部执行完成相关推荐

  1. python 协程爬虫_Python爬虫进阶教程(二):线程、协程

    简介 线程 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID.程序计数器.寄存器集合和堆栈共同组成.线程的引入减小了程序并发执行时的开销,提高了操作系统的并发 ...

  2. 细说协程零二、为什么要用协程

    首先我们来看看目前Android开发中成熟的Retrofit + OkHttp + RxJava网络请求的格式: fun <V> requestData(mObservable: Obse ...

  3. 协程的挂起、恢复和调度的原理 (二)

    目录 一. 协程的挂起.恢复和调度的设计思想 二. 深入解析协程 1. 协程的创建与启动 2. 协程的线程调度 3. 协程的挂起和恢复 4. 不同 resumeWith 的解析 5. 协程整体结构 一 ...

  4. 【并发编程二十】协程(coroutine)_协程库

    [并发编程二十]协程(coroutine) 一.线程的缺点 二.协程 三.优点 四.个人理解 五.协程库 1.window系统 2.unix系统(包括linux的各个版本) 2.1.makeconte ...

  5. Go 学习笔记(25)— 并发(04)[有缓冲/无缓冲通道、WaitGroup 协程同步、select 多路监听通道、close 关闭通道、channel 传参或作为结构体成员]

    1. 无缓冲的通道 无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道. 这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能 ...

  6. 协程的三种同步方式Channel、Mutex、WaitGroup

    1.无缓冲的channel:无缓冲的channel只能发送完之后协程立马阻塞,只有等有协程接受了之后才能继续发送,等待协程接受了,之后立马阻塞,等待channel中有数据才会启动 package ma ...

  7. 使用waitgroup控制协程退出

    1.waitgroup三个接口特别重要 Add Done Wait 如下代码 import ("fmt""sync" )//如何解决主的grouptine在子协 ...

  8. python中的协程(二)

    协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他 ...

  9. python2协程_python中的协程(二)

    协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞在原地,该线程内的其他 ...

最新文章

  1. LaTeX技巧 twocolumn 双栏
  2. python如何调用图片-用python简单处理图片(4):图像中的像素访问
  3. Nginx环境下PHP flush失效的解决方法
  4. how to improve efficiency of graphic neural network?
  5. Django框架(1.Django框架的简介)
  6. 呃... 写满数据的硬盘是否比空硬盘重?
  7. C#中的多文档的使用
  8. HTTPS SSL/TLS协议原理
  9. 通过elasticsearch对日志进行搜索热词统计
  10. 从今天开始写python编程
  11. Solidity函数中pure、view、constant的用法
  12. vlookup和sumif函数使用通配符
  13. Olly Advanced 1.1 by MaRKuS TH-DJM
  14. 录屏存储为gif图片
  15. (附源码)计算机毕业设计SSM装修信息分享管理系统
  16. daphile的dsd设置_小块头有大能量 篇二:JaguarBoard之Daphile HiFi 畅享
  17. 你还在观望吗?Creator3D小鲜肉《小鸭快跑》新鲜出炉!
  18. 诺基亚塞班系统S60第三版FP2实用软件
  19. 地理信息培训考试(all)20+min90+
  20. 说说宽带路由器的几个主要参数

热门文章

  1. svn数据仓库配置,权限配置
  2. Android中活动Activity方面的知识点
  3. Kettle使用_4 Excel批量数据输入
  4. 两个列表合并去重_把两个pdf合并成一个如何解决?
  5. Oracle游标有何用,Oracle游标使用方法有哪些?
  6. 深度学习之windows python faster rcnn 配置及demo运行
  7. 迁移学习--Xception
  8. 关于初学Go的一些总结
  9. 输入一个字符串,将其逆序后输出
  10. 沉淀2017,勇闯2018