在Golang中使用goroutine时遇到问题 主程序包 进口( “fmt” //-“时间” ) func main(){ c:=制造(成交量) 对于i:=0;i

在Golang中使用goroutine时遇到问题 主程序包 进口( “fmt” //-“时间” ) func main(){ c:=制造(成交量) 对于i:=0;i,go,goroutine,Go,Goroutine,: 主Goroutine应该正在运行,以便运行任何其他Goroutine。如果主Goroutine终止,则程序将终止,并且不会运行其他Goroutine 等待通道“c”上消息的1000个goroutine正在“后台”中运行。主线程向通道“c”发送1000条消息并立即终止 大约100个整数的输出将是不确定的,因为只有主线程将1000个整数发送到通道“c”时,1000个goroutine中的每个goroutine才能生存。您需要主线程等待1000个goroutine完成。请尝试使用sync.Wait

主Goroutine应该正在运行,以便运行任何其他Goroutine。如果主Goroutine终止,则程序将终止,并且不会运行其他Goroutine

等待通道“c”上消息的1000个goroutine正在“后台”中运行。主线程向通道“c”发送1000条消息并立即终止

大约100个整数的输出将是不确定的,因为只有主线程将1000个整数发送到通道“c”时,1000个goroutine中的每个goroutine才能生存。您需要主线程等待1000个goroutine完成。请尝试使用
sync.WaitGroup
对象:

package main

import (
    "fmt"
    //-"time"
)

func main() {
    c:=make(chan int)
    for i:=0;i<1000;i++{
        go func() {
            fmt.Println(<-c)
        }()
    }
    for j:=0;j<1000;j++{
        c<-j
        //-time.Sleep(time.Second/100)
    }
}
主程序包
进口(
“fmt”
“同步”
//-“时间”
)
func main(){
wg:=sync.WaitGroup{}
c:=制造(成交量)

对于i:=0;我将您的代码作为文本,而不是图像。也许我知道问题出在哪里。因为系统调用将花费大量时间,并且主函数不会等待太长时间。非常感谢。这是我关于stackoverflow的第一个问题。您真的鼓励我在这里问问题:d此程序是颠倒编写的,它不应该等待值bein推送,但等待读取值。因此不需要waitgroup。
package main

import (
    "fmt"
    "sync"
    //-"time"
)

func main() {
    wg := sync.WaitGroup{}
    c:=make(chan int)
    for i:=0;i<1000;i++{
        wg.Add(1)
        go func() {
            fmt.Println(<-c)
            wg.Done()
        }()
    }
    for j:=0;j<1000;j++{
        c<-j
        //-time.Sleep(time.Second/100)
    }
    wg.Wait()
}