En este ejemplo veremos cómo implementar un grupo de trabajadores usando goroutines y canales. |
|
|
|
|
|
Aquí está el trabajador, del cual ejecutaremos varias
instancias concurrentes. Estos trabajadores recibirán
trabajo en el canal |
|
|
|
Para usar nuestro grupo de trabajadores necesitamos enviarles trabajo y recoger sus resultados. Creamos 2 canales para esto. |
|
Esto inicia 3 trabajadores, inicialmente bloqueados porque aún no hay trabajos. |
|
Aquí enviamos 5 |
|
Finalmente, recogemos todos los resultados del trabajo. Esto también asegura que las goroutines de los trabajadores hayan terminado. Una forma alternativa de esperar a múltiples goroutines es usar un WaitGroup. |
|
Nuestro programa en ejecución muestra los 5 trabajos siendo ejecutados por varios trabajadores. El programa solo tarda unos 2 segundos a pesar de hacer unos 5 segundos de trabajo total porque hay 3 trabajadores operando concurrentemente. |
|
|
Siguiente ejemplo: WaitGroups.