Golang中的并发
来源:互联网 发布:企业邮箱 知乎 编辑:程序博客网 时间:2024/05/20 08:43
sync.WaitGroup provides a goroutine synchronization mechanism in Golang, and is used for waiting for a collection of goroutines to finish.
1.Golang中的go func()是异步的,主函数main中的协程并不会等待go func()的完成,一旦main中协程执行结束就立马退出,然而go func()的协程可能还在执行。如果go func()中执行的函数的时间远远小于main中的协程执行时间,这个时候main协程退出了,go func()协程已经完成任务了。
2.如果想让main中的协程等待其他的协程完成任务后再退出,只能使用同步方法,例如sync.WaitGroup
3.如下是代码示例package mainimport ( "time" "fmt" "sync")type Job struct { name string i int max int}func Exec(job *Job,wg *sync.WaitGroup) { defer wg.Done() for job.i< job.max { fmt.Printf("%s%d\n",job.name,job.i) time.Sleep(1 * time.Millisecond) job.i++ }}func main() { var wg sync.WaitGroup wg.Add(2) job1 := Job{} job1.max = 6 job1.name = "job1_" job2 := Job{} job2.max = 3 job2.name = "job2_" go Exec(&job1,&wg) Exec(&job2,&wg) wg.Wait()}
0 0
- Golang中的并发
- 进一步认识golang中的并发
- 进一步认识golang中的并发
- golang并发
- golang 并发
- 一张图快速理解golang中的并行与并发
- Golang并发详解
- Golang-并发详解
- golang 并发编程基础
- golang并发编程
- golang-并发编程goroutine
- golang 并发 chan
- GoLang 并发控制
- Golang-简洁的并发
- Golang的并发处理
- GOLANG如何并发
- Golang-简洁的并发
- Golang 并发的退出
- CSAPP: Buffer Lab
- Android:Handler机制的原理
- VC PreTranslateMessage函数详解
- 更新了MDK4.6之后的版本后TKStudio无法编译链接的解决办法
- 机器学习的学习路径
- Golang中的并发
- struts2添加需要的jar包
- weakreference 用法
- 在VS Code上搭建Python开发环境
- JDBC 的数据库的PreparStatement插入,删除,更新。
- MTK功能机,文件列表
- 10+年程序员总结的20+条经验教训
- 杭电OJ 青年歌手大奖赛_评委会打分
- 构建elasticsearch集群