试图在goroutine中设置for循环
我是一个试图同步运行两个函数的初学者,我使用waitGroup等待其中一个函数。问题是Go似乎完全忽略了我的for循环,并打印packetsReceived=0试图在goroutine中设置for循环,go,Go,我是一个试图同步运行两个函数的初学者,我使用waitGroup等待其中一个函数。问题是Go似乎完全忽略了我的for循环,并打印packetsReceived=0 func introducePacket(firstVortex chan string) { index := 1 packetsSended := 0 msg := strconv.Itoa(index) + " message" for packetsSended > 14
func introducePacket(firstVortex chan string) {
index := 1
packetsSended := 0
msg := strconv.Itoa(index) + " message"
for packetsSended > 14 {
select {
case firstVortex <- msg:
fmt.Println(msg)
packetsSended++
default:
time.Sleep(10 * time.Millisecond)
}
}
}
func receivePacket(wg *sync.WaitGroup, lastVortex chan string) {
packetsReceived := 0
fmt.Println("RECEIVE")
for packetsReceived > 14 {
select {
case msg := <-lastVortex:
fmt.Println(msg)
packetsReceived++
default:
time.Sleep(1 * time.Millisecond)
}
}
fmt.Println(packetsReceived)
defer wg.Done()
}
func main() {
var wg sync.WaitGroup
wg.Add(1)
vortexOne := make(chan string, 1)
vortexThree := make(chan string, 1)
go introducePacket(vortexOne)
go receivePacket(&wg, vortexThree)
wg.Wait()
}
func导入包(第一个字符串){
索引:=1
已卸载的包:=0
msg:=strconv.Itoa(索引)+“消息”
对于已卸载的包装>14{
挑选{
案例14{
挑选{
case msg:=for循环不会执行,因为从一开始packetsReceived>14
就为false。也许你的意思是for packetsReceived这是真的……非常感谢,但我认为这一个仍然不起作用。