Junior — Middle
Explique el concepto de dividir tareas entre varios hilos o procesos para optimizar el trabajo del sistema. ¿Qué significa el término Work-Sharing?
sobes.tech AI
Respuesta de la IA
Work-Sharing es un concepto de distribución de tareas entre varios hilos o procesos para mejorar la eficiencia y el rendimiento del sistema. En lugar de que un solo hilo realice todo el trabajo de manera secuencial, las tareas se dividen en partes que se procesan en paralelo por diferentes ejecutores.
En Go, esto se implementa mediante goroutines y canales, donde varias goroutines pueden procesar conjuntamente un conjunto de tareas, distribuyendo la carga y reduciendo el tiempo de ejecución.
Ejemplo en Go:
package main
import (
"fmt"
"sync"
)
func worker(id int, jobs <-chan int, wg *sync.WaitGroup) {
defer wg.Done()
for j := range jobs {
fmt.Printf("Trabajador %d procesando tarea %d\n", id, j)
}
}
func main() {
jobs := make(chan int, 5)
var wg sync.WaitGroup
for w := 1; w <= 3; w++ {
wg.Add(1)
go worker(w, jobs, &wg)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
wg.Wait()
}
Aquí, varios trabajadores (hilos) procesan conjuntamente una cola de tareas, lo que acelera la ejecución en comparación con el procesamiento secuencial.