запросы и результаты записываются в слайс. надо "распараллелить" это дело.
порядок важен. значит, можно присваивать слайсу результат по индексу типа
results[i] = res
и обернуть это в go func().
но мне кажется, что тут нужны локи, ибо если одновременно записывать в слайс, то я не знаю что случится)
что посоветуете? мб есть т.н. "best practise"? слышал про пакет list, типа асинхронный список. мб его юзануть?
syncmap посмотрите
1. если размер слайса заранее известен и индекс в который будете писать - то можете смело писать, гонки не будет ну т.е просто передаете слайс и пишете в него s[i] = v Главное - чтобы в один и тот же индекс не писали разные горутины 2. Либо через канал 3. Либо через мьютекс Смотря насколько код важный и читаемый и не забудьте написать параллельный тест, чтобы точно все ок было :)
да, размер слайса известен точно гонки не будет?)000 мне кажется нелогичным тот факт, что в слайс можно одновременно записывать данные
Да, точно гонки не будет. Т.к запись ведется в разные блоки памяти.
Скрин покройте тестом код, на случай изменений)
о, тогда окей, спасибо)
Один вариант, который не упомянули — канал каналов. Делайте по каналу на один результат, и записывайте канал в другой общий канал
в моей ситуации оверкилл, но способ интересный, буду знать)
Обсуждают сегодня