您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Golang中的并行处理

Golang中的并行处理

关于GOMAXPROCS,您可以在Go 1.5的发行文档中找到:

认情况下,Go程序在将GOMAXPROCS设置为可用内核数的情况下运行;在以前的版本中,它认为1。

关于防止main功能立即退出,您可以利用WaitGroup的Wait功能

我写了这个实用程序函数来帮助并行化一组函数

import "sync"

// Parallelize parallelizes the function calls
func Parallelize(functions ...func()) {
    var waitGroup sync.WaitGroup
    waitGroup.Add(len(functions))

    defer waitGroup.Wait()

    for _, function := range functions {
        go func(copy func()) {
            defer waitGroup.Done()
            copy()
        }(function)
    }
}

所以在您的情况下,我们可以这样做

func1 := func() {
    f(0)
}

func2 = func() {
    f(1)
}

func3 = func() {
    f(2)
}

Parallelize(func1, func2, func3)

如果要使用Parallelize函数,可以在这里找到它https://github.com/shomali11/util

Go 2022/1/1 18:16:07 有438人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶