Golang笔记

尽量用标准库来实现并发,可以避免管理上开销

尽量用标准库来实现并发,这样可以避免管理上开销,下面是一个示例

package main

import (
    "fmt"
    "sync"
    "time"
)

type someDataStruct struct {
    Val int
}

var wg sync.WaitGroup

func main() {

    t1 := time.Now()

    tasks := make(chan someDataStruct, 40)

    for i := 0; i < 40; i++ {
        wg.Add(1)

        go func() {
            for data := range tasks {
                // do some work on data
                fmt.Println(data.Val + 1)
            }
            wg.Done()
        }()

        someData := someDataStruct{i}
        // Push to it like this:
        tasks <- someData
    }

    // Finish like this
    close(tasks)
    wg.Wait()

    t2 := time.Now()
    fmt.Println("消耗时间:", t2.Sub(t1), "秒")
}

运行输出:

1
2
3
...
38
39
40
消耗时间: 3.848086ms 秒
本文网址: https://golangnote.com/topic/73.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles