golang как остановить горутину
2 года назад
Nikolai Gagarinov
Ответы
В Go горутины могут быть остановлены только с помощью средств, предоставляемых самим языком. Все остановки горутин должны осуществляться добровольно и контролируемо.
Самый распространенный способ остановки горутины - это использование каналов для передачи сообщений. Вы можете создать канал, который будет использоваться для передачи сигналов об остановке горутины, и проверять его состояние в теле горутины. Если состояние канала указывает на необходимость остановки, горутина должна корректно завершить свою работу и выйти.
Вот пример кода, который демонстрирует использование канала для остановки горутины:
В этом примере главная горутина создает канал stop и запускает горутину worker с этим каналом в качестве параметра. Горутина worker работает бесконечным циклом, выполняя свою работу, и проверяет состояние канала stop в блоке select. Если канал получает сигнал об остановке, горутина завершает работу и возвращает управление. Главная горутина отправляет сигнал об остановке через канал stop после 5 секунд ожидания и ждет завершения горутины worker. После завершения работы горутины, программа завершается.
2 года назад
Даниил Першин
А если в default поставить time.Sleep(9999999999 * time.Second), через сколько завершится программа?
default:
// Выполнение работы в горутине
fmt.Println("Работаю...")
time.Sleep(9999999999 * time.Second)
2 года назад
Aleks Teroni