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

Моя очередь теперь спрашивать)))) Как можно несколько горутин синхронизировать внутри них

самих? допустим, я создаю горутины, которые каждая по отдельности сначала себя инициализирует какое-то время, затем дожидается остальных, чтобы всем вместе одновременно бахнуть кучей, скажем, запросов?

придумал пока сделать вейтгруппу, чтоб вот как то так:
for ... {
wg.Add(n)
go func() {
initSomething()
wg.Done()
wg.Wait()
doSomethingAtSameTime()
}
}
но возможно, что есть какой-то более лаконичный способ

20 ответов

15 просмотров
Richard-Cooper Автор вопроса

Никто не подскажет, да?(

А оно точно надо? Горутины все равно не будут строго одновременно работать

Richard-Cooper Автор вопроса
Aleksei Olshanskiy
А оно точно надо? Горутины все равно не будут стро...

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

нормально, только wg.add надо из цикла вытащить

Richard-Cooper Автор вопроса
Aleksei Olshanskiy
Ну можно вашим вариантом, вроде ок

мне он не нравится( есть подозрение, что куча локов на wait одной группы некорректно будет себя вести. хотя вроде там каналы.. хрен его знает

Richard-Cooper Автор вопроса
Andrey Kartashov
нормально, только wg.add надо из цикла вытащить

ну короче да, я наверное попробую, потом отпишусь

Аноним

Есть же наверное какой-нибудь паттерн оркестрации горутин...

Richard-Cooper Автор вопроса
Аноним
Есть же наверное какой-нибудь паттерн оркестрации ...

да я думаю под это даже пакетик какой-нибудь есть с 1.5 звездочками, да вот найти не могу) наверное есть, потом попытаюсь поглубже покопать, сейчас так если работает то круто

звучит как бродкаст

Richard-Cooper Автор вопроса
медленно
звучит как бродкаст

бродкаст чего?) мне нужно протестить, что в хендлерах сервера не будет никаких гонок, и что они смогут параллельно обрабатывать 100500 запросов

Аноним
Richard Cooper
бродкаст чего?) мне нужно протестить, что в хендл...

Так можно просто 100500 запросов запустить не парясь, если я не ошибаюсь, одновременно запустить из-за архитектуры планировщика не выйдет

Richard Cooper
бродкаст чего?) мне нужно протестить, что в хендл...

ну если есть канал в который уперлись n горутин, то его закрытие будет бродкастом для старта работы горутин

а ещё я очень хочу заюзать sync.Cond но каждый раз получается что проще делать без него

Richard-Cooper Автор вопроса

а в чем проблема дождаться через wait инициализации, а потом раскидывать через канал работу (запросы)?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта