gpt4 book ai didi

go - Go中如何并行调用一个函数

转载 作者:IT王子 更新时间:2023-10-29 02:32:40 24 4
gpt4 key购买 nike

我正在尝试并行运行一个函数....当我这样做的时候

func runParallel() {
var out [5]chan string
for i := range out {
out[i] = make(chan string)
}
for j:=0; j<2; j++ {
fmt.Println("\nStarting: ", j)
go func() {
out[0] <- f3(4)
}()

fmt.Println(<-out[0])
}
}

func main() {
runParallel()
}

我看到函数被一个接一个地串行调用...但是当我这样做时...

func runParallel() {
var out [5]chan string
for i := range out {
out[i] = make(chan string)
}

fmt.Println("\nStarting: ", j)
go func() {
out[0] <- f3(4)
}()
go func() {
out[0] <- f3(4)
}()

fmt.Println(<-out[0])
}

func main() {
runParallel()
}

函数被并行调用。

我需要在 for 循环中获取名为 parallel 的函数,请帮忙。

最佳答案

请记住,goroutines 提供并发性,并且 concurrency is not parallelism .

第一个示例中的问题是您正在从 for 循环内的无缓冲 channel 读取数据,因此 goroutine 中发生的写入被序列化以等待读取。将读取移到 for 循环之外,和/或将读取放入它自己的 goroutine 中,您可能会看到更多的并行化。

关于go - Go中如何并行调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43477725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com