170 похожих чатов

Подскажите мне плиз, кто тут в горутинах шарит 😁 есть такой

код
var (
wg sync.WaitGroup
errorsCh = make(chan error)
)

go func() {
wg.Wait()
close(errorsCh)
}()
for _, url := range urls {
go func() {
defer wg.Done()
wg.Add(1)
...
}()
}
select {
case err := <-errorsCh:
return nil, err
}
...
проблемный ли он?
что будет в случае, если urls пустой

6 ответов

23 просмотра

Привет! Этот код реализует модель конкурентного выполнения задач с использованием горутин и каналов в Go. Проблемы с кодом могут возникнуть в следующих случаях: Если urls пустой (не содержит элементов), то ни одна горутина не будет создана, и wg.Wait() будет вызываться немедленно. В этом случае, канал errorsCh будет закрыт без каких-либо ошибок. Если эта логика соответствует вашим требованиям, то это не проблема. Если urls содержит элементы, то для каждого элемента будет создана отдельная горутина с помощью анонимной функции go func() {...}. Каждая горутина вызывает wg.Add(1) для инкремента счетчика ожидания wg, а затем defer wg.Done() для уведомления о завершении работы. select используется для ожидания ошибок из канала errorsCh. В случае получения ошибки из канала, код возвращает nil и ошибку. Если никаких ошибок не возникает в горутинах и errorsCh не получает никаких значений, то select будет блокироваться и код продолжит свое выполнение. Таким образом, основные проблемы с кодом связаны с обработкой ошибок и с тем, что он может быть заблокирован в случае, если никаких ошибок не возникает и errorsCh не закрывается. В зависимости от требований вашего кода, вам может потребоваться добавить дополнительную логику обработки ошибок или завершения работы горутин.

Данил
Привет! Этот код реализует модель конкурентного вы...

По моему он самую очевидную проблему не сказал

https://pkg.go.dev/golang.org/x/sync/errgroup Возьми это и меньше граблей соберёшь

Alex- Автор вопроса
Maxim Biryukov
https://pkg.go.dev/golang.org/x/sync/errgroup Возь...

да не, err тут для примера, логика там похитрее в общем случае

Alex- Автор вопроса

Если urls пустой (не содержит элементов), то ни одна горутина не будет создана, и wg.Wait() будет вызываться немедленно. В этом случае, канал errorsCh будет закрыт без каких-либо ошибок. Если эта логика соответствует вашим требованиям, то это не проблема. правильно ли я понимаю, что наши опасения опровергнуты чатомГПТ? :)

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта