Concorrência com GO

Comecei a programar com GO há pouco tempo. E logo me deparei com algumas dúvidas de como usar a concorrência. Pesquisei bastante e encontrei algumas soluções muito interessantes, as quais compartilho aqui.

Sugiro você primeiro assistir esse video do Rob Pike no Google I/O 2012: https://www.youtube.com/watch?v=f6kdp27TYZs&t=944s. Os programas que ele mostra podem ser encontrados aqui: https://github.com/kevchn/go-concurrency-patterns. E a apresentação que ele utilizou está aqui: https://talks.golang.org/2012/concurrency.slide

Outros links que li e achei úteis sobre concorrência em GO:

Por fim, criei um exemplo (https://github.com/alexsetta/seqVsConc), no qual comparo o desempenho de duas funções que fazem a mesma coisa: acessar um slice de URLs e retornar o StatusCode de cada uma. A diferença é que uma função faz a busca sequencial e a outra de forma concorrente. 

Na prática, o tempo sequencial é a soma de todos os tempos individuais pois a função acessa uma URL, espera a resposta e segue adiante e o tempo concorrencial é, para um número limitado de URLs, o tempo de acesso da URL mais lenta, pois neste caso a função dispara várias chamadas simultâneas e quando a mais lenta terminar as outras já terão terminado.

O tempo de resposta fala por si só:


Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Problema ao transferir arquivos grandes via FTP