«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему `input.Text()` оценивается в основной горутине при использовании операторов `go`?

Почему `input.Text()` оценивается в основной горутине при использовании операторов `go`?

Опубликовано 20 ноября 2024 г.
Просматривать:808

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

Почему input.Text() оценивается в основной горутине

В главе 8 книги Язык программирования Go следующее утверждение: Сделано по поводу эхо-сервера параллелизма:

Аргументы функции, запускаемой go, оцениваются при выполнении самого оператора go; таким образом, input.Text() оценивается в основной горутине.

Этот оператор означает, что при выполнении оператора go функция input.Text() немедленно оценивается, и ее результат передается в go echo () горутина. Это отличается от обычного вызова функции, где аргументы функции оцениваются при вызове функции, а результаты передаются вызываемой функции.

Причина этой разницы в том, что операторы go начинают новый goroutine, и горутины выполняются одновременно с основной горутиной. Если бы аргументы функции, запущенной go, были оценены при вызове функции, основной горутине пришлось бы ждать завершения функции, прежде чем запускать новую горутину. Это противоречит цели использования горутин, которая заключается в включении параллелизма.

Оценивая аргументы функции, запущенной go, когда выполняется сам оператор go, основная горутина не должна ждать выполнения функции завершить. Это позволяет запускать горутины одновременно, что является желаемым поведением.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3