Назад к задачам
Фабрика РешенийПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
3
Ограниченный пул горутин для выполнения GET‑запросов
Компании, где спрашивали:
Условие задачи
Необходимо обеспечить запуск не более трёх одновременно работающих воркеров, которые делают HTTP‑GET запросы к URL‑адресам из предоставленного списка и выводят тело ответа в стандартный вывод.
package main
import (
"log"
)
// worker pool:
// организовать запуск не более 3 параллельных воркеров,
// которые выполняют запросы на все url из массива urls
// и выполнят GET‑запрос на каждый URL.
// Вывести body ответа в stdout в текстовом виде.
// пример урлов, которые получаем от генератора:
//
// http://echo.xff.pw:8080/?echo_time=100&echo_body=body-1
// http://echo.xff.pw:8080/?echo_time=1500&echo_body=body-2
// http://echo.xff.pw:8080/?echo_time=500&echo_body=body-3
// http://echo.xff.pw:8080/?echo_time=150&echo_body=body-4
// http://echo.xff.pw:8080/?echo_time=500&echo_body=body-5
// функцию main желательно никак не менять,
// но если требуется по реализации — можно
func main() {
pool := makePool(3)
for url := range generateUrls(5) {
log.Printf("=> Запуск, %s", url)
pool.DoWork(url)
}
}