php-Editor Yuzai stellt Ihnen heute ein Problem im Zusammenhang mit Protogen vor: die Situation, in der der Goroutine-Stack überschritten wird. Bei der Entwicklung mit Protogen wird manchmal eine Fehlermeldung angezeigt, die darauf hinweist, dass der Goroutine-Stack größer ist. Das Auftreten dieses Problems kann zu Programmabstürzen oder Leistungseinbußen führen. Warum tritt dieses Problem auf und wie lässt es sich lösen? Als nächstes werden wir sie einzeln beantworten.
Kürzlich bin ich in Golang auf ein Problem bei der Codegenerierung gestoßen. Ich habe eine riesige Rohdatei und muss jetzt mithilfe eines externen Pakets die Protokollierung für die meisten Nachrichten hinzufügen. Wenn ich jedoch die Protokollierung für zu viele Felder hinzufüge, gerät es in Panik und meldet, dass der Goroutine-Stack überschritten ist. Gibt es eine Möglichkeit, Code in Blöcken zu generieren oder einfach die maximale Cache-Größe der generierten Goroutinen zu erhöhen?
Ich habe debug.SetMaxStack ausprobiert und den Build-Befehl mit Go-Code ausgeführt, aber es hat sich nichts geändert, es schien mir keine gute Lösung zu sein
Es stellte sich heraus, dass das Problem darin lag, wie @BurakSerdar in seinem Kommentar zum rekursiven Drucken sagte im Kreislauf. Wenn Sie also so etwas haben wie:
message human { string name = 1; human child = 2; human parent = 3; }
Das sollten Sie nicht tun:
message human { string name = 1; human child = 2 [(logger.field) = true]; human parent = 3; }
Ich glaube, das Gleiche gilt auch für andere Anpassungen, die Sie den Feldern hinzufügen möchten. Wenn Sie eine Nachricht haben, fügen Sie ein Feld mit demselben Nachrichtentyp hinzu
Das obige ist der detaillierte Inhalt vonDer Protogen-Goroutine-Stapel überschreitet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!