Sobes.tech
Junior — Middle

Descreva como os processos de trabalho foram construídos e geridos na sua organização anterior.

sobes.tech IA

Resposta da IA

Na organização anterior, os processos de trabalho eram construídos usando goroutines e canais em Go para gerir eficientemente tarefas paralelas.

Pontos principais:

  • Cada tarefa era executada numa goroutine separada, permitindo realizar múltiplos processos simultaneamente.
  • Utilizavam-se canais para sincronizar e transferir dados entre goroutines, garantindo uma troca segura de informações.
  • Para controlar a finalização do trabalho, era usado sync.WaitGroup, para aguardar que todas as goroutines terminassem.

Exemplo:

var wg sync.WaitGroup
jobs := make(chan int, 10)

worker := func(id int, jobs <-chan int, wg *sync.WaitGroup) {
    defer wg.Done()
    for job := range jobs {
        fmt.Printf("Trabalhador %d processando tarefa %d\n", id, job)
        // processamento da tarefa
    }
}

func main() {
    for w := 1; w <= 3; w++ {
        wg.Add(1)
        go worker(w, jobs, &wg)
    }

    for j := 1; j <= 5; j++ {
        jobs <- j
    }
    close(jobs)

    wg.Wait()
}

Desta forma, os processos estavam organizados como um grupo de trabalhadores que processavam tarefas recebidas em paralelo.