Параллельная обработка в Golang: использование параллелизма для повышения производительности
Рассмотрите предоставленный код, который демонстрирует параллельную обработку с помощью горутин. Однако это поднимает вопросы о возможности одновременного выполнения и оптимальном подходе для достижения параллелизма. не гарантировано. В то время как горутины предоставляют облегченный механизм параллелизма, планировщик ОС определяет фактическую последовательность выполнения. GOMAXPROCS, согласно примечаниям к выпуску Go 1.5, обычно соответствует доступным ядрам.
Предлагаемый подход: предотвращение взаимоблокировок и управление параллелизмом
Относительно поддержания выполнения основной функции , fmt.Scanln может быть ненадежным, особенно в производственных средах. Вместо этого рассмотрите возможность реализации sync.WaitGroup, чтобы гарантировать завершение всех горутин перед выходом. Кроме того, чтобы улучшить управление параллелизмом и обеспечить правильное использование ресурсов для параллельных задач, рекомендуется использовать каналы отдельных рабочих процессов для каждой горутины.
Функция полезности для параллельного выполнения функций
Чтобы упростить выполнение параллельной функции, можно использовать существующую служебную функцию, например следующую:
import "sync" // Распараллеливание распараллеливает вызовы функций func Parallelize(functions ...func()) { var waitGroup sync.WaitGroup waitGroup.Add(len(функции)) отложить waitGroup.Wait() для _, функция := функции диапазона { go func(f func()) { отложить waitGroup.Done() е() }(функция) } }
Применение этой функции к фрагменту кода:func1 := func() { f(0) }
func2 := func() { f(1) }
func3 := func() { f(2) }
Распараллелить(func1, func2, func3)
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3