Threads são processos paralelos durante a execução de um programa, o programa vai esperar a thread terminar a execução para poder finalizar. Para criar um processo independente do programa que você está executando, é necessário criar um fork, assim o programa pode ser finalizado e o processo continuar sendo executado como um outro programa.
Por exemplo, eu quero um programa que faça buscas no Yahoo e Google simultaneamente, uso threads, mas as duas threads estarão sujeitas ao mesmo processo. Se eu quiser executar algo que vai demorar, e não ficar ocupando o console, posso usar um fork que vai permitir o programa terminar e liberar o terminal, e o processo em fork continua a ser executado. Você tem algum objetivo em mente, ou está apenas estudando? Paulo Geyer Desenvolvedor PHP/Ruby Celular: +55 48 8438-4420 Skype: paulogeyer On May 10, 2010, at 5:25 PM, Wesley Oliveira wrote: > Estranho pessoa, > > Acho que são meus conceitos que estão errados, acredito que estou querendo > algo que conceitualmente o Ruby está certo e eu errado, acredito que o que eu > quero é semelhante a um fork, mas que funcione como Thread. > > Vou estudar mais posto aqui minha conclusão. > > Mas Rafael é isso mesmo que ocorreu aqui. > > ruby 1.8.7 (2009-04-08 patchlevel 160) [x86_64-linux] > > T++ > > Em 10 de maio de 2010 16:49, Alexandre Riveira <[email protected]> > escreveu: > Olá pessoal... tentem assim > > threads = Array.new > threads << > Thread.new do > puts "inicio" > Kernel.sleep(5) > puts "fim" > end > > puts "fim do script aguardando a thread terminar" > threads.each{|t| t.join} > > > Rafael Souza escreveu: > > aqui rodou assim: http://gist.github.com/396405 > > dá uma olhada no código e nas últimas linhas, o último Time.now está lá > > não sei se tem alguma diferença nisso em relação a versão, a que eu > estou usando aqui é a 1.8.7 > > $ ruby -v > ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin9.8.0] > > > 2010/5/10 Wesley Oliveira <[email protected]>: > > Não Rafael pior que não estou. > > Ficou assim: > > Thread.new do > while(true) > puts Time.now > end > end > puts Time.now > > > O que ocorre e que Ele não executa o último Time.now fora do bloco do Thread > > Em 10 de maio de 2010 12:17, Paulo Geyer <[email protected]> escreveu: > > Aí é um fork. > > puts "Início do programa!" > fork { > puts "Início do fork" > sleep 5 > puts "Fim do fork" > } > puts "Fim do programa" > > On May 10, 2010, at 11:38 AM, Wesley Oliveira wrote: > > > Ola Pessoa, > > Estou com uma duvida, nao consigo criar um thread e a mesma liberar a > linha de execuçao principal, o programa fica esperando ela acabar para > continuar a execuçao. > > Alguem tem uma ideia do problema e uma possivel soluçao? > > Obrigado. > > -- > Nenhum de nós é tão bom quanto TODOS NÓS JUNTOS! > _______________________________________________ > Ruby-l mailing list > [email protected] > https://www.listas.unicamp.br/mailman/listinfo/ruby-l > > _______________________________________________ > Ruby-l mailing list > [email protected] > https://www.listas.unicamp.br/mailman/listinfo/ruby-l > > > -- > Nenhum de nós é tão bom quanto TODOS NÓS JUNTOS! > > _______________________________________________ > Ruby-l mailing list > [email protected] > https://www.listas.unicamp.br/mailman/listinfo/ruby-l > > > > > > > > > _______________________________________________ > Ruby-l mailing list > [email protected] > https://www.listas.unicamp.br/mailman/listinfo/ruby-l > > > > -- > Nenhum de nós é tão bom quanto TODOS NÓS JUNTOS! > _______________________________________________ > Ruby-l mailing list > [email protected] > https://www.listas.unicamp.br/mailman/listinfo/ruby-l
_______________________________________________ Ruby-l mailing list [email protected] https://www.listas.unicamp.br/mailman/listinfo/ruby-l
