Hver er munurinn á atburðdrifinni arkitektúr Node.js og fjölþráða forritun á öðrum tungumálum?


svara 1:

Í bæði atburðarstýrðri og fjölþráðum hugmyndafræði er kóðinn keyrður innan stýrikerfisferlis.

Ef ferlið keyrir marga þræði deila þessir þræðir vinnsluminni (heimilisfang pláss) til að lesa og skrifa.

JavaScript, sem rekur Node.js, er í eðli sínu einn snittari. Öllum aðgerðum er tryggt að framkvæma að fullu og enginn annar JavaScript kóða er keyrður í núverandi ferli meðan á þessari aðgerð stendur. Náttúrulega ósamstilltur atburðir (net, diskinntak / úttak, tímamælir, aðrir vélbúnaðar- og stýrikerfisatburðir) eru afgreiddir af vélinni, sem bætir við JavaScript aðgerðum sem eru skráðar sem meðhöndlarar (eða svarhringingar) fyrir þessa atburði í biðröð atburðarásarinnar sem á að framkvæma. áður en biðröð er búin.

Í fjölþráða hugmyndafræði, keyra tveir eða fleiri þræðir kóða samhliða, þannig að meðan á starfrækslu keyrslu stendur, getur einnig verið framkvæmt annað stykki af kóða á öðrum örgjörva kjarna, hugsanlega lesið eða skrifað á sömu minnisföng. Þetta getur leitt til ósamræmds minnisástands nema kóðinn noti sérstaka stýrikerfi fyrirkomulag (frumstillingar samstillingar) til að stjórna aðgangi að samnýttu minni.



svara 2:

Þetta er góð spurning: "Hver er munurinn á atburðdrifinni arkitektúr Node.j og fjölþráða forritunar á öðrum tungumálum?"

Við getum og ættum að draga úr þessu aðeins.

  • Atburðarstýrður arkitektúr hnútins

Atburðarstýrður arkitektúr er ekki eingöngu ætlaður hnútum, t.d. B. Tornado (Python), Vertx (Java), Akka (Scala), ReactiveX (mörg tungumál).

  • Fjölþráða forritun á öðrum tungumálum.

Athugaðu að JavaScript styður ekki sjálfkrafa marga þræði. Það styður vefstarfsmenn sem að mínu viti geta virkað sem þræðir.

Atburðarstýrt er því ekki aðeins í boði fyrir hnúta og hægt er að framkvæma fjölþráningu í hnútum.

Svo það geta verið tvær spurningar: „Hver ​​er munurinn á atburðdrifinni og fjölþroska“ og „Hver ​​er munurinn á hnút og öðrum tungumálum (ramma)“. Ég mun einbeita mér að því síðarnefnda þar sem þetta virðist vera ætlun spurningarinnar.

Það sérstaka við Hnút er að höfundurinn bjó til það til að forðast að hindra I / O þegar hann byggir vefforrit. Menning hnútasamfélagsins er að leggja áherslu á og byggja á styrk þess sem ekki hindrar I / O. Þú finnur ekki of mörg þriðja bókasöfn sem hindra símtöl. Sem verktaki sem notar hnút er ólíklegt að þú lendir í lúmskum stíflum í kóðanum þínum. Á öðrum tungumálum, barnalegur verktaki getur óvart hringt mjög óhagkvæm útilokandi símtöl, svo sem B. Lestur úr gagnagrunnstengingu.

Sem sagt, þú ættir virkilega að lesa meira um mörg „parallelism“ líkön og skilja kosti og galla hvers og eins. Bónus stig fyrir að viðurkenna hvers vegna fjölþráður hefur verið ásættanlegur svo lengi.



svara 3:

Hugmyndamunurinn er frekar einfaldur að vefja um höfuðið.

Í arkitektúr sem rekinn er af atburðum keyrir forritið þitt í samfelldri, einn snittari lykkju (þú getur gert fjölþráða í hnút, en þú þarft ekki að hafa áhyggjur af því eins og er). Þegar atburður er settur af stað er starf á hringitakkanum sem á að vinna úr á frítíma forritsins.

Margþráður arkitektúr kallar venjulega á nýjan þráð þegar hann þarf að bíða eftir aðgerð. Svo þú ferð í gagnagrunn og býrð til nýjan þráð sem sinnir öllum nauðsynlegum verkefnum og tekur nauðsynlegar ráðstafanir til að klára eða sameina upprunalega þráðinn aftur.

Báðar aðferðirnar eru mjög gagnlegar í mismunandi tilgangi. Atburðarstýrt er frábært fyrir notendaviðmót og netþjóna þar sem forritið þitt veit ekki hvenær nýr atburður á sér stað og atburðir gerast oft í spurts. Þó að þráður sé nauðsynlegur í tölvufrekum störfum þar sem þú vilt skipta vandamálinu í miklu minni hluta (eða nálgast mörkin á einni þráðarlykkjunni).