В предыдущей инструкции мы рассмотрели концепт выполнения кода с определенной задержкой. Такой же концепт можно использовать для имплементации таймаута для операций, что запускаются на долгое время. В данной инструкции показано, как это можно сделать.

Как поставить лимит на время выполнения программы в Golang?

1. Создайте файл timeout.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run timeout.go в терминале;
3. Посмотрите на результат:

Таймаут для долгих операций в коде выше имплементирован через использование функции time.After, что предоставляет повторяющийся канал за определенный промежуток времени.

Сама по себе операция использует оператор, что выбирает между каналом time.After и опцией по умолчанию, что выполняет операцию.

Обратите внимание, что вам нужно позволить коду периодически читать из канала time.After для выяснения превышен таймаут или нет. В противном случае, если ветвь кода по умолчанию будет полностью блокировать выполнение, то не будет способа выяснить, истек ли таймаут и завершить операцию.

В примере мы используем функцию time.After, но функция Timer также может использоваться подобным способом. Встроенные библиотеки также используют context.WithTimeout для имплементации функциональности таймаута.

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!