Você está na página 1de 10

Uso de chamadas

assíncronas em Node.js
2504108449 - Gabriel Ferreira de Miranda Programação Concorrente
2505063910 - Glaydston Oliveira Veloso 7º Período - Noite
1105274863 - Isabela Pflueger Profeta Faculdade Anhanguera de Belo Horizonte
1191398393 - Marcio Francoes Borges
2505001269 - Rízia Vieira dos Santos
Resumo
● Arquiteturas Bloqueantes;
● Node.js
● Por que o assíncrono?
● Comparações
● Exemplo
● Referencias
● Questões
Arquiteturas Bloqueantes
Sistemas desenvolvidos em Java, .NET, Python, Ruby ou PHP possuem a
característica de paralisar um processamento enquanto utilizam um I/O.
Um sistema bloqueante enfileira cada requisição e depois as processa, uma a
uma, não permitindo múltiplos processamentos delas. Enquanto uma requisição é
processada as demais ficam em espera, mantendo por um período de tempo uma fila
de requisições ociosas.
Exemplo: enviar e-mail, consultar o banco de dados, leitura em disco e entre
outras tarefas.
Node.js
Node.js é uma plataforma construída em tempo de execução de JavaScript para a construção
de aplicações facilmente escaláveis e ​rápidas.
Node.js usa uma arquitetura “non-blocking thread” (não bloqueante).
É uma plataforma de baixo nível pois a programação ocorre diretamente com diversos
protocolos de redes, internet ou bibliotecas que acessam recursos do sistema operacional.
As aplicações serão do tipo “single-thread” cada aplicação terá instância de um único
processo, sendo assim, não será possível usar programação em “multi-thread”, mas para
concorrência é possível utilizar um módulo nativo chamado de “clusters”.
Node.js
Vantagens:
● Boa performance com consumo de memória;
● Utiliza de forma eficiente o processador;
● Resultados rápidos nos processos;
● Ausência de “dead-locks”;
Threads x Assincronismo
Threads são manipuláveis pelo desenvolvedor, ou seja, você pode pausar a execução de uma
Thread ou fazê-la esperar o término de uma outra.
Chamadas assíncronas apenas invocam suas funções numa ordem de que você não tem
controle, e você só sabe quando uma chamada terminou quando seu callback é executado.
Pode parecer vantajoso ter o controle sobre as Threads a favor de um sistema que executa
tarefas em paralelo, mas pouco domínio sobre eles pode transformar seu sistema em um caos de
travamentos dead-locks, afinal Threads são executadas de forma bloqueante.
Este é o grande diferencial das chamadas assíncronas, elas executam em paralelo suas funções
sem travar processamento das outras e principalmente sem bloquear o sistema principal.
Comparações
Síncrono - Programação Comum Assíncrono - Node.js
Escrita Assíncrona - Node.js
var fs = require('fs');
var inicio = new Date().getTime();

for(var i = 1; i <= 5; i++){


var inicio = new Date().getTime();
var file = "async-txt" + i+ ".txt";
fs.writeFile(file, "Hello Node.js!", function(err, out){
console.log(out);
});
}

var fim = new Date().getTime();


console.log("Time total: " +(fim-inicio)+"ms");
Questões para Aprendizado
1 - Complete a frase com as opções abaixo. As thread são executada de forma
……….., enquanto as chamadas assíncronas do Node.js são executadas de
forma ….
A) Não bloqueante, Bloqueante.
B) Paralela, Síncrona.
C) Paralela, bloqueante.
D) Bloqueante, Não bloqueante.
2 - Uma aplicação Node.js gera 5 arquivos em disco de forma assíncrona.
Quantas threads essa aplicação utilizou?
A) 3 Threads
B) 2 Threads
C) 1 Thread
D) 5 Threads
Referências
Aplicações Web Real Time com Node.JS - Caio Ribeiro Pereira - Editora Casa do Código - 2013.

Construindo Aplicações Node com MongoDB e Backbone - Mike Wilson - Editora Novatec - 2012.

BIJOOR, Ashutosh. Java EE threads v/s Node.js – which is better for concurrent data processing
operations. Disponível em:<http://bijoor.me/2013/06/09/java-ee-threads-vs-node-js-which-is-
better-for-concurrent-data-processing-operations/>. Acesso em: 01 abr. 2014.

Você também pode gostar