Im Kapitel 8 von Die Go-Programmiersprache lautet die folgende Aussage gemacht über den Parallelitäts-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 besteht darin, 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3