Explore algunas características proporcionadas en este artículo.
Golang mutex
La sincronización.Mutex proporciona un mutex primitivo, que permite exclusiones mutuas para recursos compartidos que evitan las condiciones de carrera.
Ejemplo de uso:
paquete principalLeer/escribir mutex
La sincronización.RWMutex proporciona un lector/escritor mutex. Ofrece métodos similares a un mutex primitivo, pero puede permitir lecturas concurrentes utilizando métodos Rlock y Runlock:
var i = 10El ejemplo anterior puede permitir que más de una goroutine lea el código. A diferencia de Sync.Mutex, que permite exactamente un lector y un escritor a la vez.
Groups de espera
La sincronización.WaitGroup se utiliza para ofrecer un mecanismo de bloqueo para las goroutinas. Usando un grupo de espera, puede bloquear la ejecución de una función hasta que todas las Goroutinas hayan terminado de ejecutar.
Funciona creando un contador que contiene el número de goroutinas para esperar. Una vez que se completa una goroutina, el contador disminuye en 1. Una vez que el contador es 0, el grupo de espera desbloquea la ejecución.
Para agregar un valor al mostrador de WaitGroup, podemos usar el método add (), que toma un valor entero.
Para eliminar una goroutina del mostrador después de la finalización, usamos el método hecho (). Por ejemplo:
paquete principalEn el ejemplo anterior, aumentamos el valor del contador de grupos de espera por 1 a través del uso de la función add ().
Una vez que se completa una goroutina, disminuimos el contador por 1 usando el método hecho (). El código anterior debe devolver la salida como:
Trabajador: 4 RunningUna vez
La sincronización.Una vez primitivo, asegura que una función se ejecute solo una vez. Un ejemplo es como se muestra a continuación:
Var una vez sincronizado.Una vezConclusión
Esta guía cubre algunas primitivas básicas y fundamentales proporcionadas por el paquete GO Sync. Además, se discutieron las primitivas de sincronización, como mutex, waitgroup, piscina, lectura y escritura mutex, y variables de condición. Esperamos que hayas encontrado este artículo útil. Echa un vistazo a otros artículos de Sugerencia de Linux para obtener más consejos y tutoriales.