使用管道实现WaitGroup同步功能
作者:
funcx | 来源:发表于
2019-04-21 12:55 被阅读0次package main
import (
"log"
)
func main() {
wg := NewWG()
for i := 0; i < 5; i++ {
wg.Acc()
go func(n int) {
log.Println(n)
wg.Done()
}(i)
}
wg.Wait()
log.Println("end")
}
// 使用chan写一个类型实现sync.WaitGroup{}功能,并测试
type wg struct {
ch chan struct{}
count int
}
func NewWG() *wg {
return &wg{ch: make(chan struct{})}
}
func (w *wg) Acc() {
w.count++
}
func (w *wg) Done() {
w.ch <- struct{}{}
}
func (w *wg) Wait() {
for i := 0; i < w.count; i++ {
<-w.ch
}
}
本文标题:使用管道实现WaitGroup同步功能
本文链接:https://www.haomeiwen.com/subject/myndgqtx.html
网友评论