Is Ruby on Rails multithreaded?
Is Ruby on Rails multithreaded?

Video: Is Ruby on Rails multithreaded?

Video: Is Ruby on Rails multithreaded?
Video: Threads in Ruby 2024, Mei
Anonim

Phusion Passenger gebruikt procesgebaseerde concurrency om een paar verzoeken tegelijk af te handelen, dus strikt genomen is dit niet " meerdradig , " maar is nog steeds gelijktijdig. Dit gesprek van Robijn MidWest 2011 heeft een aantal goede gedachten over het verkrijgen van multithreaded Ruby on Rails gaan.

Ondersteunt Ruby op deze manier multithreading?

EEN meerdradig programma heeft meer dan één uitvoeringsdraad. Robijn maakt het gemakkelijk om programma's met meerdere threads te schrijven met de klasse Thread. Robijn threads zijn een lichtgewicht en efficiënte manier om gelijktijdigheid in uw code te bereiken.

Ten tweede, is Ruby gelijktijdig? Vooral, Ruby gelijktijdigheid is wanneer twee taken kunnen starten, uitvoeren en voltooien in overlappende tijdsperioden. Het betekent echter niet noodzakelijk dat ze ooit allebei op hetzelfde moment zullen draaien (bijvoorbeeld meerdere threads op een single-core machine).

Evenzo, is Ruby single-threaded?

Het korte antwoord is ja, dat zijn ze enkele schroefdraad . Het lange antwoord is: het hangt ervan af. JRuby is meerdradig en kan in Tomcat worden uitgevoerd zoals andere Java-code. MRI (standaard robijn ) en Python hebben beide een GIL (Global Interpreter Lock) en zijn dus: enkele schroefdraad.

Heeft Ruby een Gil?

MRI heeft iets dat een globale tolkvergrendeling wordt genoemd ( GIL ). Het is een slot rond de executie van Robijn code. Dit betekent dat in een context met meerdere threads slechts één thread kan worden uitgevoerd Robijn code op elk moment. De GIL bestaat om te beschermen Robijn internals van race-omstandigheden die gegevens kunnen beschadigen.

Aanbevolen: