Come si impara la concorrenza in Ruby? [chiuso]

7

Ieri ho letto questo fantastico articolo su Concurrency in JRuby di EngineYard e mi rendo conto che ho bisogno di sfruttare le mie capacità in materia di concorrenza in Ruby, menzionando Ruby qui intendo che potrebbe essere tutte le implementazioni di Ruby: JRuby , Ruby MRI , Rubinius , Ruby on Parrot / Cardinal tranne IronRuby , non codice in ambiente Windows.

Quello che ho imparato dal mondo di Haskell, in particolare da Simon Peyton-Jones , ha detto sul suo video che OOP è tutto sullo stato.

Nota: sono molto molto inesperto quando menziono Haskell, ho solo guardato alcuni bei video su Haskell , ho risolto pochissimi (meno di 10) progetti euler in Haskell, ho letto alcuni buoni libri ed esercitazioni Haskell, non ho mai codificato in Haskell professionalmente, ho solo letto alcuni codici sorgente in Haskell, ex. pugs , Darcs e alcuni altri Codici Haskell Non ricordo la fonte.

Potrei voler usare Jaskell per ingannare la concorrenza fintanto che utilizzo jruby, ma questo è per il mio piano di apprendimento a lungo termine, voglio massimizzare la mia competenza simultanea in ruby, hai qualche suggerimento da darmi imparare la concorrenza nel rubino? Vorrei che ci fosse una specie di Head First book per farmi imparare Concurrency in Ruby. Cose come strategie / come affrontare il problema della concorrenza in ruby, ispirato da articolo EngineYard e Haskell. Forse alcuni buoni video scaricabili che spiegano passo dopo passo a rafforzare il mio fondamentale sulla concorrenza in generale e quindi passare alla concorrenza in ruby in modo specifico.

Consigli? Grazie.

    
posta Arie 24.07.2011 - 02:24
fonte

1 risposta

6

Per iniziare, leggi la spiegazione della concorrenza Ruby per ottenere una panoramica . Si noti che la comunità di Ruby, in generale, sembra trovare la concorrenza come argomento nuovo e controverso e che la gente discute con veemenza e incessantemente su molti dettagli su come dovrebbe essere implementata in o tramite Ruby. Cerca i fondamenti e non lasciarti coinvolgere in una polemica argomentativa!

Una raccomandazione alla chiarezza è di separare mentalmente l'idea di concorrenza da multi-threading, che è solo un metodo di implementazione. Il threading è un modo per implementare la concorrenza ma ce ne sono altri; in particolare, guarda il parallelismo dei processi come menzionato in La concorrenza è un mito in rubino .

l'approccio Modello di attore alla concorrenza è implementato in molte lingue, ora, e Ruby Concurrency with Actors fornisce una delicata introduzione al modo in cui gli attori possono essere implementati tramite Ruby. Gli attori possono semplificare la concorrenza in molti casi e possono aiutarti ad evitare alcune trappole più pericolose.

La comunità di Ruby ha implementato una classe Fiber per fornire una "leggera concorrenza cooperativa" in Rubino. Sicuramente vorrai seguire alcuni dei link in Fibre di rubino: 8 utili letture sulla nuova funzionalità di concorrenza di Ruby per comprendere questa nuova aggiunta alla lingua.

Tieni presente che come spiegato da Engine Yard , JRuby e Ruby operano su diversi virtual macchine e che queste differenze possono avere enormi implicazioni per le implementazioni della concorrenza, in termini di cosa sia possibile sia come sia possibile.

La tua è una domanda preziosa dato che Ruby sta entrando nel dominio simultaneo e puoi essere un "early adopter"! Buona fortuna per la tua meritevole ricerca!

    
risposta data 26.09.2011 - 23:06
fonte

Leggi altre domande sui tag