Heim > Backend-Entwicklung > Golang > Warum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn „go'-Anweisungen verwendet werden?

Warum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn „go'-Anweisungen verwendet werden?

Patricia Arquette
Freigeben: 2024-11-14 09:26:01
Original
583 Leute haben es durchsucht

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

Warum input.Text() in der Haupt-Goroutine ausgewertet wird

Im Kapitel 8 von The Go Programming Language steht die folgende Aussage gemacht über den Concurrency-Echo-Server:

Die Argumente der von go gestarteten Funktion werden ausgewertet, wenn die go-Anweisung selbst ausgeführt wird; Daher wird input.Text() in der Haupt-Goroutine ausgewertet.

Diese Anweisung bedeutet, dass bei Ausführung der go-Anweisung die Funktion input.Text() sofort ausgewertet wird und ihr Ergebnis an das go-Echo übergeben wird () goroutine. Dies steht im Gegensatz zu einem regulären Funktionsaufruf, bei dem die Funktionsargumente ausgewertet werden, wenn die Funktion aufgerufen wird, und die Ergebnisse an die aufgerufene Funktion übergeben werden.

Der Grund für diesen Unterschied ist, dass go-Anweisungen eine neue beginnen Goroutine und Goroutinen werden gleichzeitig mit der Haupt-Goroutine ausgeführt. Wenn die Argumente der von go gestarteten Funktion beim Aufruf der Funktion ausgewertet würden, müsste die Haupt-Goroutine warten, bis die Funktion abgeschlossen ist, bevor sie die neue Goroutine startet. Dies würde den Zweck der Verwendung von Goroutinen zunichte machen, der darin besteht, Parallelität zu ermöglichen.

Durch die Auswertung der Argumente für die von go gestartete Funktion, wenn die go-Anweisung selbst ausgeführt wird, muss die Haupt-Goroutine nicht auf die Funktion warten zu vervollständigen. Dadurch können die Goroutinen gleichzeitig gestartet werden, was das gewünschte Verhalten ist.

Das obige ist der detaillierte Inhalt vonWarum wird „input.Text()' in der Haupt-Goroutine ausgewertet, wenn „go'-Anweisungen verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage