Goroutine-Ausführung unter Windows: Fehlerbehebung bei stillem Fehler
Ein einfacher Test mit Goroutinen zeigt unerwartetes Verhalten unter Windows, da die erwartete Ausgabe nicht erzeugt wird . Das Problem entsteht, weil die Hauptfunktion nicht auf den Abschluss der Goroutine wartet, bevor sie beendet wird.
Go Awaits
Wenn eine Goroutine mit dem Schlüsselwort „go“ gestartet wird, Es wird gleichzeitig mit der Hauptfunktion ausgeführt. Die Ausführung der Hauptfunktion wird jedoch nicht angehalten und auf den Abschluss der aufgerufenen Goroutinen gewartet. Folglich wird die Hauptfunktion beendet, wodurch die Goroutine möglicherweise außerplanmäßig bleibt.
Abhilfemaßnahmen
Um sicherzustellen, dass die Goroutine die Möglichkeit hat, ihre Ausgabe auszuführen und zu drucken, wird die Hauptfunktion ausgeführt Die Funktion muss so geändert werden, dass sie einige Zeit wartet. Dies kann mit dem Paket „time“ und der Funktion „Sleep“ erreicht werden. Durch die Einführung einer Ruhezeit gibt die Hauptfunktion der Goroutine die Möglichkeit, vor dem Beenden zu laufen und eine Ausgabe zu erzeugen.
Geänderter Code
Der folgende geänderte Code behebt das Problem Hinzufügen einer Ruhezeit von 10 Sekunden am Ende der Hauptfunktion:
<code class="go">package main import ( "fmt" "time" ) func test() { fmt.Println("test") } func main() { go test() time.Sleep(10 * time.Second) }</code>
Ausgabe
Der geänderte Code erzeugt nun die erwartete Ausgabe:
test
Diese Änderung ermöglicht es der Hauptfunktion, nach dem Start der Goroutine zu warten, sodass sie genügend Zeit hat, die „Test“-Meldung auszuführen und zu drucken, bevor das Programm beendet wird.
Das obige ist der detaillierte Inhalt vonWarum verschwindet meine Goroutine-Ausgabe unter Windows?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!