Перейти к содержимому

У вас есть список URL-адресов, которые нужно обработать параллельно. Однако одновременно можно запускать не более N гору

go · concurrencyMTS / МТС (задачи, ч. 2)1 кв 2025не решено

У вас есть список URL-адресов, которые нужно обработать параллельно. Однако одновременно можно запускать не более N горутин. Вместо реального выполнения HTTP-запросов использовать httpGet(). Реализуйте функцию fetchURL, которая:

  • Захватывает семафор перед началом работы;
  • Добавляет результат в общий срез results;
  • Освобождает семафор после завершения.
func httpGet(url string) string {
time.Sleep(time.Second)
return fmt.Sprintf("%s: 200 OK ", url)
}
func fetchURL() {
// Напишите код здесь.
}
func main() {
urls := []string{
"https://www.google.com ",
"https://www.github.com ",
"https://www.stackoverflow.com ",
"https://www.reddit.com ",
"https://golang.org ",
}
const maxConcurrency = 2
results := make([]string, len(urls))
for _, result := range results {
fmt.Println(result)
}
}

Источник: MTS / МТС (задачи, ч. 2) · 1 кв 2025

← Необходимо написать Worker Pool, чтобы… · Все задачи · Go · Необходимо реализовать функцию LoadConf… →