golang сделать обработку многопоточной

Пользователь

zola

от zola , в категории: Вопросы от знатоков , год назад

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


Вот не многопоточный вариант

func doubleSlice(s []int) {
    for i := range s {
        s[i] = s[i] * 2
    }
}
Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

3 ответа

Пользователь

от monte , год назад

Да многопоточность сильно поможет Вам особенно если массив очень большой

Попробуйте вот так

func doubleSlice(s []int) {
    var wg sync.WaitGroup
    for i := range s {
        wg.Add(1)
        go func(i int) {
            defer wg.Done()
            s[i] = s[i] * 2
        }(i)
    }
    wg.Wait()
}

Пользователь

от elena , год назад

А чем RabbitMq не нравится или redis queue ?

Пользователь

от genesis_tillman , год назад
elena: А чем RabbitMq не нравится или redis queue ?

@elena а зачем настраивать и использовать какое то дополнительное обеспечение если нужно для решения одной просто задачи! Они хорошо подходят для решения сложных задач - к примеру Вы посылаете миллионы писем в день! А иногда нужно что то простое!