En el ejemplo anterior vimos cómo manejar un simple estado de contador utilizando operaciones atómicas. Para un estado más complejo podemos usar un mutex para acceder de manera segura a los datos a través de múltiples goroutines. |
|
|
|
|
|
Container contiene un mapa de contadores; dado que queremos
actualizarlo concurrentemente desde múltiples goroutines, añadimos
un |
|
Bloquea el mutex antes de acceder a |
|
|
|
Nota que el valor cero de un mutex se puede usar tal cual, por lo que no se requiere inicialización aquí. |
|
|
|
|
|
Esta función incrementa un contador nombrado en un bucle. |
|
Ejecuta varias goroutines concurrentemente; nota
que todas acceden al mismo |
|
Espera a que las goroutines terminen |
|
Ejecutar el programa muestra que los contadores se actualizaron como se esperaba. |
|
A continuación, veremos cómo implementar esta misma tarea de gestión de estado usando solo goroutines y canales. |
Siguiente ejemplo: Stateful Goroutines.