Sobes.tech
Junior — Middle

Explique o conceito de concorrência na linguagem de programação Go e seu papel no desenvolvimento de aplicações paralelas

sobes.tech IA

Resposta da IA

No Go, a concorrência é a capacidade de um programa executar várias tarefas ao mesmo tempo, utilizando eficientemente os recursos do processador. No idioma Go, isso é feito através das goroutines, que são threads leves iniciadas com a palavra-chave go.

A concorrência permite escrever aplicações paralelas, onde diferentes partes do código são executadas simultaneamente, aumentando o desempenho e a capacidade de resposta dos programas.

Para sincronizar e trocar dados entre goroutines, usam-se canais, que proporcionam uma comunicação segura sem o uso explícito de bloqueios.

Exemplo:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Trabalhador %d iniciando\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Trabalhador %d terminado\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // iniciar goroutine
    }
    time.Sleep(2 * time.Second) // aguardar o término das goroutines
}

Este exemplo mostra três goroutines executando simultaneamente, demonstrando a concorrência em Go.