小编wil*_*ifi的帖子

golang中的并行处理

给出以下代码:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func main() {
    for i := 0; i < 3; i++ {
        go f(i)
    }

    // prevent main from exiting immediately
    var input string
    fmt.Scanln(&input)
}

func f(n int) {
    for i := 0; i < 10; i++ {
        dowork(n, i)
        amt := time.Duration(rand.Intn(250))
        time.Sleep(time.Millisecond * amt)
    }
}

func dowork(goroutine, loopindex int) {
    // simulate work
    time.Sleep(time.Second * time.Duration(5))
    fmt.Printf("gr[%d]: i=%d\n", goroutine, loopindex)
}
Run Code Online (Sandbox Code Playgroud)

我可以假设'dowork'函数将并行执行吗?

这是实现并行性的正确方法还是更好地使用渠道并为每个goroutine分离"dowork"工作者?

parallel-processing go goroutine

9
推荐指数
2
解决办法
4万
查看次数

标签 统计

go ×1

goroutine ×1

parallel-processing ×1