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

Как поставить лимит на время выполнения программы в 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 для имплементации функциональности таймаута.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *