Publicado por Dalto Curvelano em 16 de May de 2009
Fibras: 8 leituras úteis sobre a nova funcionalidade de concorrência do Ruby
Clique aqui para adicionar ao del.icio.us | Nenhum comentário - Deixe o seu agora!
O conceito de fibers (ou fibras) é novo no Ruby 1.9. Fibers são (green) threads leves com escalonamento cooperativo e manual, ao invés do escalonamento preemptivo das threads do Ruby 1.8. Desde a versão 1.9 do Ruby as threads existem a nível de sistema operacional, as fibers são, de certo modo, a resposta do Ruby 1.9 às green threads do Ruby 1.8, mas sem o escalonamento preemptivo.
Como o Ruby 1.9 está ficando mais importante a cada mês que se passa, coletamos os melhores artigos sobre as funcionalidades das fibers, para que você possa ficar basicamente atualizado com os conceitos mais importantes em cerca de 10 ou 15 minutos. Se você está ficando interessado no Ruby 1.9, deve querer ler os seguintes artigos:
Rubis, Fibras e Geradores - No blog do TaQ tem um post muito completo contendo algumas informações sobre o conceito de Fibers. Com vários códigos de exemplo e explicações muito claras. Vale a pena conferir pois este é um dos posts em português mais completos sobre o assunto.
Fibers & Cooperative Scheduling in Ruby - Ilya Grigorik escreveu talvez a melhor visão geral sobre o assunto. Incluindo um ótimo diagrama, um código de exemplo e uma olhada em como o JRuby e o Rubinius se comparam. Se você só puder ler um artigo, que seja este.
Pipelines Using Fibers in Ruby 1.9 - Dave Thomas escreveu mais um de seus ótimos tutoriais, desta vez mostrando como as fibers podem ser usadas para emular operações de pipeline no estilo Unix. Tem até uma segunda parte.
Ruby 1.9 Fiber documentation - A documentação atual do Ruby 1.9 para a classe Fiber. Não contém uma explicação muito profunda, mas é uma introdução razoável com alguns exemplos simples.
Ruby 1.9 adds Fibers for lightweight concurrency - Um resumo sobre fibers do Werner Schuster do InfoQ. Esse artigo já tem dois anos, (lá da época em que nem existia 100% de certeza sobre a presença das fibers no Ruby 1.9) mas contém um exemplo simplíssimo além de algumas informações sobre fibers tiradas tando da MSDN quando do Sasada Koichi (o cara do YARV).
Ruby Fibers vs Ruby Threads - Muhammed Ali mostra através de alguns benchmarks como as fibers são muito mais leves que as threads em termos de tempo de criação e uso de memória. Notavelmente, Muhammed atingiu um limite de 3070 threads enquanto 100,000 fibers não se tornaram um problema, (exceto pelos excepcionais níveis de memória usados).
Fibers implemented for Ruby 1.8.6/7 - Aman Gupta e Joe Damato adquiriram suas faixas pretas de programadores com um conjuntos de patches para as versões 1.8.6 e 1.8.7 do Ruby que implementa fibers nesses interpretadores. Um trabalho impressionante.
Ruby Fiber Ring Benchmark - Uma implementação do famoso problema do Erlang, o benchmark "ring", em Ruby. Considerando as diferenças entre Ruby e Erlang, o Ruby se saiu relativamente bem no benchmark. O código também pode lhe interessar.
Ruby Concurrency with Actors - Pat Eyler mostra como usar fibers para implementar sistemas que fazem uso do Actor Model, usando principalmente a biblioteca RevActor.
Você ainda não pegou o bonde do Ruby 1.9? Confira nosso post 23 Links e Recursos Úteis do Ruby 1.9.


