У вас есть список URL-адресов, которые нужно обработать параллельно. Однако одновременно можно запускать не более N гору
Условие
Заголовок раздела «Условие»У вас есть список 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… →