Junior — Middle
Pode-se usar objetos de sincronização como argumentos ao chamar funções?
sobes.tech IA
Resposta da IA
Em Go, os objetos de sincronização, como sync.Mutex ou sync.WaitGroup, geralmente são passados por ponteiro para evitar copiar o estado interno e garantir o funcionamento correto.
É possível passar esses objetos como argumentos de função, mas é importante:
- Passar um ponteiro para o objeto de sincronização, não uma cópia.
- Não copiar objetos de sincronização, pois isso pode levar a um comportamento imprevisível.
Exemplo de passagem de *sync.Mutex para uma função:
func criticalSection(mu *sync.Mutex) {
mu.Lock()
defer mu.Unlock()
// seção crítica
}
func main() {
var mu sync.Mutex
criticalSection(&mu)
}
Assim, os objetos de sincronização podem ser usados como argumentos, mas devem ser passados por ponteiro.