Эйч
Эйч
  • Все менторы
Задачи/Go-разработчик/Поиск и устранение утечек горутин

Поиск и устранение утечек горутин

Условие задачи

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

gopackage main

import (
  "fmt"
  "runtime"
  "time"
)

func main() {
  for i := 0; i < 100; i++ {
    requestData(1)
  }

  time.Sleep(time.Second * 1)
  fmt.Printf("Number of hanging goroutines: %d\n", runtime.NumGoroutine())
}

func requestData(timeout time.Duration) string {
  dataChan := make(chan string)

  go func() {
    dataChan <- requestFromSlowServer()
  }()

  select {
  case result := <-dataChan:
    fmt.Printf("[+] request returned: %s\n", result)
    return result
  case <-time.After(timeout):
    fmt.Println("[!!] request timeout!")
    return ""
  }
}

func requestFromSlowServer() string {
  time.Sleep(time.Second * 1)
  return "very important data"
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта