conc更好地Golang并发控制三方库

发布时间:阅读数:665


从介绍来看,conc简化了并发操作控制,目前这个需要进入到学习Todo(需要升级版本)

项目地址: https://github.com/sourcegraph/conc

方法1

func main() {
    var wg conc.WaitGroup
    defer wg.Wait()

    startTheThing(&wg)
}

func startTheThing(wg *conc.WaitGroup) {
    wg.Go(func() { ... })
}

方法2

func main() {
    var wg conc.WaitGroup
    wg.Go(doSomethingThatMightPanic)
    // panics with a nice stacktrace
    wg.Wait()
}

方法3

func main() {
    var wg conc.WaitGroup
    for i := 0; i < 10; i++ {
        wg.Go(doSomething)
    }
    wg.Wait()
}

方法4

func process(stream chan int) {
    p := pool.New().WithMaxGoroutines(10)
    for elem := range stream {
        elem := elem
        p.Go(func() {
            handle(elem)
        })
    }
    p.Wait()
}

官方提供了几个例子,按着来就行


置顶文章
推荐文章