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