Ruby on Rails este multithread?
Ruby on Rails este multithread?

Video: Ruby on Rails este multithread?

Video: Ruby on Rails este multithread?
Video: How to build a Multithreaded HTTP Server in Ruby from Scratch | Preview 2024, Noiembrie
Anonim

Phusion Passenger folosește concurența bazată pe proces pentru a gestiona câteva solicitări simultan, așa că, strict vorbind, nu este " multifile , " dar este încă concurent. Această discuție de la Rubin MidWest 2011 are câteva gânduri bune despre obținerea Ruby on Rails cu mai multe fire mergând.

În acest fel, Ruby acceptă multithreading?

A multifile programul are mai mult de un fir de execuție. Rubin facilitează scrierea de programe multi-thread cu clasa Thread. Rubin firele sunt o modalitate ușoară și eficientă de a obține concurență în codul dvs.

În al doilea rând, Ruby este concomitentă? În special, Concurență Ruby este momentul în care două sarcini pot începe, rula și finaliza în perioade de timp suprapuse. Totuși, nu înseamnă neapărat că ambele vor rula vreodată în același moment (de exemplu, mai multe fire de execuție pe o mașină cu un singur nucleu).

La fel, Ruby are un singur fir?

Răspunsul scurt este da, sunt cu un singur filet . Răspunsul lung este că depinde. JRuby este multifile și poate fi rulat în tomcat ca alt cod java. RMN (implicit rubin ) și Python au ambele un GIL (Global Interpreter Lock) și sunt astfel cu un singur filet.

Ruby are un Gil?

RMN are ceva numit blocare globală a interpretului ( GIL ). Este o lacăt în jurul execuției Rubin cod. Aceasta înseamnă că într-un context cu mai multe fire, se poate executa doar un fir Rubin cod la un moment dat. The GIL există pentru a proteja Rubin elemente interne din condițiile de cursă care ar putea deteriora datele.

Recomandat: