starten Ich habe den folgenden Beispielcode. Ich möchte 4 Gokutinen laufen lassen. Sie haben die Möglichkeit, in Panik zu geraten. Im Falle der Panik habe ich eine Wiederherstellung, bei der ich die Goroutine neu starte.Golang, richtiger Weg, um eine Routine, die in Panik geraten
Die Art, wie ich implementiert, funktioniert, aber ich bin mir nicht sicher, ob es der richtige und richtige Weg ist, dies zu tun. Irgendwelche Gedanken
package main
import (
"fmt"
"time"
)
var gVar string
var pCount int
func pinger(c chan int) {
for i := 0; ; i++ {
fmt.Println("adding ", i)
c <- i
}
}
func printer(id int, c chan int) {
defer func() {
if err := recover(); err != nil {
fmt.Println("HERE", id)
fmt.Println(err)
pCount++
if pCount == 5 {
panic("TOO MANY PANICS")
} else {
go printer(id, c)
}
}
}()
for {
msg := <-c
fmt.Println(id, "- ping", msg, gVar)
if msg%5 == 0 {
panic("PANIC")
}
time.Sleep(time.Second * 1)
}
}
func main() {
var c chan int = make(chan int, 2)
gVar = "Preflight"
pCount = 0
go pinger(c)
go printer(1, c)
go printer(2, c)
go printer(3, c)
go printer(4, c)
var input string
fmt.Scanln(&input)
}
Ich habe diese Methode versucht und es fügt einfach hinzu und fügt hinzu. Wie schränkt man die Anzahl der Goroutines ein? Es laicht Goroutines, die das Hauptproblem ist – Sakib
@Sakib können Sie so etwas tun func main() { ... für i: = 0; ich