Sobes.tech
Junior — Middle

Pode explicar as diferenças entre execução concorrente de tarefas, processamento assíncrono e trabalho paralelo de threads?

sobes.tech IA

Resposta da IA

  • Execução concorrente de tarefas — é a capacidade do sistema de gerir múltiplas tarefas, alternando entre elas para parecer que estão a ser executadas simultaneamente. Em Go, isto é conseguido com goroutines, que são agendadas por um escalonador.

  • Processamento assíncrono — é a execução de operações sem bloquear o thread principal. Por exemplo, uma consulta à base de dados pode ser feita de forma assíncrona, permitindo que o programa continue a trabalhar enquanto aguarda o resultado.

  • Trabalho paralelo de threads — é a execução simultânea de múltiplas threads em diferentes núcleos do processador. Em Go, o paralelismo é alcançado ao lançar várias goroutines, que podem ser executadas em paralelo em múltiplos núcleos se GOMAXPROCS > 1.

Exemplo em Go:

func main() {
    go task1() // concorrente e potencialmente paralelo
    go task2()
    time.Sleep(time.Second) // espera pela conclusão
}