Sobes.tech
Junior — Middle

Como é implementado o processamento paralelo e sequencial de tarefas na linguagem Go?

sobes.tech IA

Resposta da IA

Em Go, o processamento paralelo de tarefas é realizado usando goroutines, que são threads leves iniciados com a palavra-chave go. Pode-se lançar uma goroutine para executar uma função de forma assíncrona, e ela será executada em paralelo com outras goroutines.

O processamento sequencial é simplesmente a chamada de funções sem usar go, onde as tarefas são realizadas uma após a outra.

Exemplo de processamento paralelo:

package main

import (
    "fmt"
    "time"
)

func tarefa(id int) {
    fmt.Printf("Tarefa %d iniciada\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Tarefa %d finalizada\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go tarefa(i) // inicia uma goroutine
    }
    time.Sleep(2 * time.Second) // espera a conclusão das goroutines
}

Neste exemplo, três tarefas são iniciadas em paralelo. Se remover go, as tarefas serão executadas sequencialmente.

Para sincronizar e gerenciar goroutines, frequentemente usam-se canais (channels) e sync.WaitGroup.