前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang 中sync.WaitGroup以及select简单实用

golang 中sync.WaitGroup以及select简单实用

作者头像
李海彬
发布2018-03-21 17:40:15
1.2K0
发布2018-03-21 17:40:15
举报
文章被收录于专栏:Golang语言社区

olang中sync.WaitGroup的作用类似于channel,可实现并发。

代码语言:javascript
复制
package main

import (
"fmt"
"runtime"
"sync"
)

func main() {
runtime.GOMAXPROCS(runtime.NumCPU())      //多核
wg := sync.WaitGroup{}
wg.Add(10)
for i := 0; i < 10; i++ {
go f(&wg, i)
}
wg.Wait()
}


func f(w *sync.WaitGroup, i int) {
fmt.Println(i, "go")
w.Done()
}

golang中select是配合channel使用的。
package main
import (
"fmt"
"runtime"
)
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
c1, c2 := make(chan int), make(chan string)
flag := make(chan bool, 2)
go func() {
for {
select {
case k, err := <-c1:
if !err {
flag <- true
break
}
fmt.Println(k)
case k, err := <-c2:
if !err {
flag <- true
break
}
fmt.Println(k)
}
}
}()
c1 <- 1
c2 <- "a"
c1 <- 2
c2 <- "b"
close(c1)
close(c2)
for i := 0; i < 2; i++ {
<-flag
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档