Is Ruby on Rails multi-threaded?
Is Ruby on Rails multi-threaded?

Video: Is Ruby on Rails multi-threaded?

Video: Is Ruby on Rails multi-threaded?
Video: Threads in Ruby 2024, Mei
Anonim

Phusion Passenger gebruik prosesgebaseerde sameloop om 'n paar versoeke gelyktydig te hanteer, dus is dit streng gesproke nie " veeldraad , " maar is steeds gelyktydig. Hierdie praatjie van Ruby MidWest 2011 het 'n paar goeie gedagtes oor kry multithreaded Ruby on Rails gaan.

Ondersteun Ruby op hierdie manier multithreading?

A veeldraad program het meer as een draad van uitvoering. Ruby maak dit maklik om multi-draad programme met die Thread klas te skryf. Ruby drade is 'n liggewig en doeltreffende manier om gelyktydigheid in jou kode te bereik.

Tweedens, is Ruby gelyktydig? In die besonder, Ruby sameloop is wanneer twee take in oorvleuelende tydperke kan begin, hardloop en voltooi. Dit beteken egter nie noodwendig dat hulle ooit albei op dieselfde oomblik sal werk nie (bv. veelvuldige drade op 'n enkelkernmasjien).

Is Ruby ook enkeldraad?

Die kort antwoord is ja, hulle is enkeldraad . Die lang antwoord is dit hang af. JRuby is veeldraad en kan in tomcat uitgevoer word soos ander java-kode. MRI (verstek robyn ) en Python het albei 'n GIL (Global Interpreter Lock) en is dus enkeldraad.

Het Ruby 'n Gil?

MRI het iets wat 'n globale tolkslot genoem word ( GIL ). Dis 'n slot om die uitvoering van Ruby kode. Dit beteken dat slegs een draad in 'n multi-draad konteks kan uitvoer Ruby kode op enige tydstip. Die GIL bestaan om te beskerm Ruby internes van rastoestande wat data kan korrupteer.

Aanbeveel: