Ar „Ruby on Rails“yra daugiasriegis?
Ar „Ruby on Rails“yra daugiasriegis?

Video: Ar „Ruby on Rails“yra daugiasriegis?

Video: Ar „Ruby on Rails“yra daugiasriegis?
Video: Ruby on Rails by Leila Hofer 2024, Lapkritis
Anonim

„Phusion Passenger“naudoja procesais pagrįstą lygiagretumą, kad vienu metu tvarkytų keletą užklausų, taigi, griežtai tariant, nėra „ daugiasriegis “, bet vis tiek vyksta vienu metu. Šis pokalbis iš Rubinas „MidWest 2011“turi keletą gerų minčių, kaip gauti daugiasriegis Ruby on Rails vyksta.

Ar tokiu būdu „Ruby“palaiko daugiagiją?

A daugiasriegis programa turi daugiau nei vieną vykdymo giją. Rubinas leidžia lengvai rašyti kelių gijų programas naudojant Thread klasę. Rubinas gijos yra lengvas ir efektyvus būdas pasiekti kodo vienodumą.

Antra, ar Ruby yra kartu? Visų pirma, Rubino lygiagretumas yra tada, kai dvi užduotys gali prasidėti, vykdyti ir užbaigti persidengiančiais laikotarpiais. Tačiau tai nebūtinai reiškia, kad jie abu veiks tą pačią akimirką (pvz., kelios gijos vieno branduolio įrenginyje).

Be to, ar „Ruby“yra vieno sriegio?

Trumpas atsakymas yra taip, jie yra vieno sriegio . Ilgas atsakymas yra tai, kad tai priklauso. JRuby yra daugiasriegis ir gali būti paleistas tomcat kaip ir kitas Java kodas. MRT (numatytasis rubinas ) ir Python turi GIL (Global Interpreter Lock), todėl yra vieno sriegio.

Ar Ruby turi Gil?

MRT turi kažkas vadinama visuotiniu vertėjo užraktu ( GIL ). Tai užraktas apie vykdymą Rubinas kodas. Tai reiškia, kad kelių gijų kontekste gali būti vykdoma tik viena gija Rubinas kodą bet kuriuo metu. The GIL egzistuoja tam, kad apsaugotų Rubinas vidiniai elementai dėl lenktynių sąlygų, galinčių sugadinti duomenis.

Rekomenduojamas: