Sobes.tech
Junior — Middle

¿Puedes enumerar los patrones principales utilizados en la implementación de la multitarea?

sobes.tech AI

Respuesta de la IA

Los patrones principales de concurrencia incluyen:

  • Pool de hilos (Thread Pool): cantidad fija de hilos que se reutilizan para ejecutar tareas, lo que reduce los costos de crear nuevos hilos.

  • Productor-consumidor (Producer-Consumer): uno o varios hilos producen datos, otros los consumen, generalmente usando una cola segura para hilos.

  • Barrera (Barrier): sincronización de varios hilos para que todos alcancen un punto determinado antes de continuar.

  • Mutexes y semáforos: para proteger recursos compartidos y gestionar el acceso.

  • Futuros y promesas (Futures/Promises): para obtener resultados de manera asíncrona desde los hilos.

  • Modelo actor: cada actor es un hilo separado o un objeto con una cola de mensajes que los procesa secuencialmente.

En Go, a menudo se usan goroutines y canales, que simplifican muchos de estos patrones, por ejemplo, un canal puede usarse para implementar el patrón productor-consumidor:

ch := make(chan int)

// Productor
go func() {
    for i := 0; i < 5; i++ {
        ch <- i
    }
    close(ch)
}()

// Consumidor
for val := range ch {
    fmt.Println(val)
}