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

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

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

Премиум 👑 канал по Golang

Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎

Подписаться на канал

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

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

Go в ВК ЧАТ в Telegram


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

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

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

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

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

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии