Duvidas a respeito do node.js (threads vs processos)
3 respostas
F
faeldix
Andei lendo por ai…
que geralmente é criada uma thread pra cada cliente no servidor. E que o node.js vem com uma ideia diferente, criando um processo pra cada conexão.
Mas ai dei uma olhada no google e achei isso:
Podemos então concluir nossa comparação entre processos e threads da seguinte forma:
Threads são também processos que são filhos de um processo pai lançado pelo sistema x. Só isso.
C
CarlosEduardoDantas
faeldix:
Andei lendo por ai…
criando um processo pra cada conexão.
Cara, pelo menos para o node.js, certamente essa informação é falsa.
Sobre a comparação entre processos e threads, todo processo possui uma ou mais threads de execução, a questão é se você vai criar vários processos onde cada um terá uma thread, ou várias threads dentro do mesmo processo. Usando com certo cuidado, a segunda opção terá mais performance, pois escalonar entre threads do mesmo processo é muito mais rápido do que threads entre processos diferentes. Aliado a isso, threads do mesmo processo poderão compartilhar a mesma heap na memória, sendo desnecessário replicar as informações comuns em todos os processos (caso necessário). Só precisa tomar cuidado com situações como “condições de corrida”, mas existem boas técnicas para tal, como monitores.
Para mais informações, sugiro como bibliografia o livro “Sistemas Operacionais Modernos” do Tanenbaum, leia o capítulo 2.
J
juliocbq
CarlosEduardoDantas:
faeldix:
Andei lendo por ai…
criando um processo pra cada conexão.
Cara, pelo menos para o node.js, certamente essa informação é falsa.
Sobre a comparação entre processos e threads, todo processo possui uma ou mais threads de execução, a questão é se você vai criar vários processos onde cada um terá uma thread, ou várias threads dentro do mesmo processo. Usando com certo cuidado, a segunda opção terá mais performance, pois escalonar entre threads do mesmo processo é muito mais rápido do que threads entre processos diferentes. Aliado a isso, threads do mesmo processo poderão compartilhar a mesma heap na memória, sendo desnecessário replicar as informações comuns em todos os processos (caso necessário). Só precisa tomar cuidado com situações como “condições de corrida”, mas existem boas técnicas para tal, como monitores.
Para mais informações, sugiro como bibliografia o livro “Sistemas Operacionais Modernos” do Tanenbaum, leia o capítulo 2.
No java não tem como trocar informação entre dois processos distintos porque a jvm não compartilha memória(sandbox). Ou tem?