• 技术文章 >后端开发 >Golang

    分享一个非常好用的GO并发控制库 !

    藏色散人藏色散人2022-12-21 18:01:40转载1160

    本篇文章给大家介绍有关Golang的相关知识,聊聊一个非常好用的golang并发控制库,希望对大家有所帮助。

    Concurrency

    Build Status

    install

    GOPROXY=https://goproxy.cn go get -v github.com/lxzan/concurrency@latest

    Feature

    Usage

    package mainimport (
        "fmt"
        "github.com/lxzan/concurrency"
        "sync/atomic")func main() {
        sum := int64(0)
        w := concurrency.NewWorkerGroup()
        for i := int64(1); i <= 10; i++ {
            w.AddJob(concurrency.Job{
                Args: i,
                Do: func(args interface{}) error {
                    fmt.Printf("%v ", args)
                    atomic.AddInt64(&sum, args.(int64))
                    return nil
                },
            })
        }
        w.StartAndWait()
        fmt.Printf("sum=%d\n", sum)}
    4 5 6 7 8 9 10 1 3 2 sum=55
    package mainimport (
        "fmt"
        "github.com/lxzan/concurrency"
        "time")func Add(args interface{}) error {
        arr := args.([]int)
        ans := 0
        for _, item := range arr {
            ans += item    }
        fmt.Printf("args=%v, ans=%d\n", args, ans)
        return nil}func Mul(args interface{}) error {
        arr := args.([]int)
        ans := 1
        for _, item := range arr {
            ans *= item    }
        fmt.Printf("args=%v, ans=%d\n", args, ans)
        return nil}func main() {
        args1 := []int{1, 3}
        args2 := []int{1, 3, 5}
        w := concurrency.NewWorkerQueue()
        w.AddJob(
            concurrency.Job{Args: args1, Do: Add},
            concurrency.Job{Args: args1, Do: Mul},
            concurrency.Job{Args: args2, Do: Add},
            concurrency.Job{Args: args2, Do: Mul},
        )
        w.StopAndWait(30*time.Second)}
    args=[1 3], ans=4args=[1 3 5], ans=15args=[1 3], ans=3args=[1 3 5], ans=9

    以上就是分享一个非常好用的GO并发控制库 !的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:Golang
    上一篇:go语言支不支持方法重载 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • golang grpc消息过大?教你快速解决!• 分享一套Go编码规范!欢迎收藏!• 聊聊Go中的循环依赖检测工具(go-cyclic)• Go Http Server框架怎么快速实现?一文搞定
    1/1

    PHP中文网