相关疑难解决方法(0)

Go中没有来自goroutine的输出

虽然SayHello()按预期执行,但goroutine没有打印任何内容.

package main

import "fmt"

func SayHello() {
    for i := 0; i < 10 ; i++ {
        fmt.Print(i, " ")
    }
}

func main() {
    SayHello()
    go SayHello()
}
Run Code Online (Sandbox Code Playgroud)

concurrency go goroutine

18
推荐指数
2
解决办法
1660
查看次数

为什么这些goroutine无法打印到控制台?

在某些情况下,我无法解释猩猩的行为。我尝试举一个简单的例子。这是我自己的文件“ main.go”:

package main

import (
    "fmt"
)

func print1() {
    fmt.Println("print 1")
}

func print2() {
    fmt.Println("print 2")
}

func print3() {
    fmt.Println("print 3")
}

func main() {

    for i:=0; i<3; i++ {
        go print1()
    }

    for i:=0; i<3; i++ {
        go print2()
    }

    for i:=0; i<3; i++ {
        go print3()
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望这3个功能(每个循环中被调用3次)同时执行,结果打印数字的顺序是不可预测的。我不明白为什么该程序可以编译并执行而没有任何错误,但是它在控制台上什么都没打印!实际上,好像在for内部的函数调用未执行。如果删除这些go子句,则打印内容将显示在控制台上。我得出的结论是,并行线程无权在控制台上打印。如何查看具有实际“并发”行为的这些打印件?

concurrency function go goroutine

-5
推荐指数
1
解决办法
76
查看次数

标签 统计

concurrency ×2

go ×2

goroutine ×2

function ×1