Выполнение горутины в Windows: устранение неполадок при скрытом сбое
Простой тест с использованием горутин показывает неожиданное поведение в Windows, поскольку ожидаемый результат не создается . Проблема возникает из-за того, что основная функция не ждет завершения горутины перед завершением.
Go Awaits
Когда горутина запускается с использованием ключевого слова "go", он выполняется одновременно с основной функцией. Однако выполнение основной функции не приостанавливается и не ждет завершения вызванных горутин. Следовательно, основная функция завершается, что потенциально может оставить горутину незапланированной. функция должна быть изменена, чтобы подождать некоторое время. Этого можно добиться с помощью пакета «Время» и функции «Сон». Вводя время ожидания, функция main дает горутине возможность запуститься и выдать выходные данные перед завершением.
Модифицированный код
Следующий измененный код решает проблему путем добавление 10-секундного времени ожидания в конец основной функции:
package main импорт ( "ФМТ" "время" ) функциональный тест() { fmt.Println("тест") } функция main() { иди тест() время.Сон(10 * время.Секунда) }
Вывод
package main
import (
"fmt"
"time"
)
func test() {
fmt.Println("test")
}
func main() {
go test()
time.Sleep(10 * time.Second)
}
testЭта модификация позволяет основной функции ждать после запуска горутины, давая ей достаточно времени для выполнения и печати «тестового» сообщения перед завершением работы программы.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3