Vamos explorar alguns recursos fornecidos neste artigo.
Golang Mutex
A sincronização.Mutex fornece uma primitiva mutex, que permite exclusões mútuas para recursos compartilhados que impedem as condições de raça.
Exemplo de uso:
Pacote principalLer/escrever mutex
A sincronização.Rwmutex fornece um leitor/escritor mutex. Ele oferece métodos semelhantes como um mutex primitivo, mas pode permitir leituras simultâneas usando métodos RLOCK e RUNLOCK:
var i = 10O exemplo anterior pode permitir que mais de uma goroutine leia o código. Ao contrário da sincronização.Mutex, que permite exatamente um leitor e um escritor de cada vez.
Grupos de espera
A sincronização.O WaitGroup é usado para oferecer um mecanismo de bloqueio para Goroutines. Usando um grupo de espera, você pode bloquear a execução de uma função até que todas as goroutinas terminem de executar.
Funciona criando um contador que mantém o número de goroutinas para esperar. Uma vez concluído uma goroutina, o contador diminui em 1. Uma vez que o contador é 0, o grupo de espera desbloqueia a execução.
Para agregar um valor ao contador do grupo de espera, podemos usar o método add (), que leva um valor inteiro.
Para remover uma goroutina do balcão após a conclusão, usamos o método feito (). Por exemplo:
Pacote principalNo exemplo anterior, incrementamos o valor do contador do grupo de espera por 1 através do uso da função add ().
Depois que uma goroutina está concluída, diminuímos o contador em 1 usando o método feito (). O código anterior deve retornar a saída como:
Trabalhador: 4 correndoUma vez
A sincronização.Uma vez primitivo garante que uma função seja executada apenas uma vez. Um exemplo é como mostrado abaixo:
var uma vez sincronizado.Uma vezConclusão
Este guia abrange algumas primitivas básicas e fundamentais fornecidas pelo pacote Go Sync. Além disso, primitivas de sincronização, como mutex, grupo de espera, piscina, leitura e gravação mutex e variáveis de condição, foram discutidas. Esperamos que você tenha achado este artigo útil. Confira outros artigos de dica do Linux para obter mais dicas e tutoriais.