Vai Ruby on Rails ir daudzpavedienu?
Vai Ruby on Rails ir daudzpavedienu?

Video: Vai Ruby on Rails ir daudzpavedienu?

Video: Vai Ruby on Rails ir daudzpavedienu?
Video: Ruby on Rails by Leila Hofer 2024, Novembris
Anonim

Phusion Passenger izmanto uz procesu balstītu vienlaicīgumu, lai vienlaikus apstrādātu dažus pieprasījumus, tāpēc, stingri ņemot, tas nav " daudzpavedienu , " bet joprojām notiek vienlaikus. Šī runa no Rubīns MidWest 2011 ir dažas labas domas par to, kā iegūt daudzpavedienu Ruby on Rails iet.

Vai Rubīns šādā veidā atbalsta daudzpavedienu izmantošanu?

A daudzpavedienu programmai ir vairāk nekā viens izpildes pavediens. Rubīns atvieglo daudzpavedienu programmu rakstīšanu ar Thread klasi. Rubīns pavedieni ir viegls un efektīvs veids, kā panākt koda vienlaicīgumu.

Otrkārt, vai Rubīns ir vienlaikus? It īpaši, Rubīna vienlaicība ir laiks, kad divus uzdevumus var sākt, izpildīt un pabeigt laika periodos, kas pārklājas. Tomēr tas nebūt nenozīmē, ka tie abi darbosies vienā un tajā pašā mirklī (piem., vairāki pavedieni viena kodola mašīnā).

Tāpat, vai Rubīns ir ar vienu vītni?

Īsā atbilde ir jā, tie ir viena vītne . Garā atbilde ir tāda, ka tas ir atkarīgs. JRuby ir daudzpavedienu un to var palaist programmā tomcat tāpat kā citu Java kodu. MRI (noklusējums rubīns ) un Python ir GIL (Global Interpreter Lock), un tādējādi tie ir viena vītne.

Vai Rūbijai ir Gils?

MRI ir kaut ko sauc par globālo tulka bloķēšanu ( GIL ). Tā ir slēdzene ap izpildi Rubīns kodu. Tas nozīmē, ka vairāku pavedienu kontekstā var izpildīt tikai vienu pavedienu Rubīns kodu jebkurā laikā. The GIL pastāv, lai aizsargātu Rubīns iekšējās ierīces no sacensību apstākļiem, kas var sabojāt datus.

Ieteicams: