Node.js ’ایونٹ سے چلنے والے فن تعمیر اور دیگر زبانوں میں ملٹی تھریڈ پروگرامنگ میں کیا فرق ہے؟


جواب 1:

واقعہ سے چلنے والے اور کثیر جہتی نمونے دونوں میں کوڈ آپریٹنگ سسٹم کے عمل کے اندر چلتا ہے۔

جب عمل متعدد تھریڈز چلاتا ہے ، تو یہ تھریڈز پڑھنے اور لکھنے کے ل the عمل میموری (ایڈریس اسپیس) دونوں کا اشتراک کرتے ہیں۔

جاوا اسکرپٹ جو نوڈ. جے کو طاقت دیتا ہے وہ ڈیزائن کے ذریعہ سنگل تھریڈ ہے۔ ہر فنکشن کی تکمیل تک چلانے کی ضمانت ہے ، اور موجودہ عمل میں کوئی دوسرا جاوا اسکرپٹ کوڈ اس فنکشن رن کے دوران نہیں چلائے گا۔ قدرتی طور پر غیر متشدد واقعات (نیٹ ورک ، ڈسک ان پٹ آؤٹ پٹ ، ٹائمر ، دیگر ہارڈویئر اور آپریٹنگ سسٹم کے واقعات) انجن کے ذریعہ سنبھالے جاتے ہیں جس میں جاوا اسکرپٹ کے افعال کو ہینڈلرز (یا کال بیکس) کے طور پر رجسٹرڈ کیا جاتا ہے جس کے بعد ایونٹ لوپ قطار میں ان واقعات کو انجام دیا جائے گا۔ قطار کے سامنے کام ختم ہوچکے ہیں۔

ملٹی تھریڈڈ پیراڈیم میں ، دو یا زیادہ تھریڈز متوازی طور پر کوڈ چلاتے ہیں ، لہذا ایک فنکشن کے دوران کوڈ کا ایک مختلف ٹکڑا مختلف پروسیسر کور پر بھی چل سکتا ہے ، اسی میموری کے پتے پر ممکنہ طور پر پڑھنا یا لکھنا۔ اس کے نتیجے میں میموری کی متضاد حالت ہوسکتی ہے جب تک کہ مشترکہ میموری تک رسائی کا انتظام کرنے کے لئے کوڈ کے ذریعہ خصوصی آپریٹنگ سسٹم میکانزم (ہم وقت سازی کے قدیم) کو استعمال نہ کیا جائے۔



جواب 2:

یہ ایک اچھا سوال ہے ، "نوڈ ڈاٹ جے ایس کے پروگرام سے چلنے والے فن تعمیر اور دیگر زبانوں میں ملٹی تھریڈ پروگرامنگ میں کیا فرق ہے؟"

ہم اسے تھوڑا سا توڑ سکتے ہیں اور کر سکتے ہیں۔

  • نوڈ کا واقعہ پر مبنی فن تعمیر۔

واقعہ پر مبنی فن تعمیر نوڈ ، جیسے ، ٹورنیڈو (ازگر) ، ورٹکس (جاوا) ، اکا (اسکالا) ، ری ایکٹی ایکس (متعدد زبانیں) کے لئے خصوصی نہیں ہے۔

  • دوسری زبانوں میں ملٹی تھریڈ پروگرامنگ۔

نوٹ کریں کہ جاوا اسکرپٹ ، ڈیزائن کے مطابق ، ایک سے زیادہ تھریڈز کی حمایت نہیں کرتا ہے۔ اگرچہ یہ ویب ورکرز کی حمایت کرتا ہے ، جہاں تک میں جانتا ہوں ، تھریڈز کے طور پر کام کرسکتا ہے۔

لہذا واقعہ پر مبنی نوڈ کے لئے منفرد نہیں ہے اور نوڈ میں ملٹی تھریڈنگ کی جاسکتی ہے۔

تو یہاں دو سوالات ہوسکتے ہیں: "ایونٹ سے چلنے والی بمقابلہ ملٹی تھریڈنگ میں کیا فرق ہے" ، اور "نوڈ اور دیگر زبانوں (فریم ورک) کے مابین کیا فرق ہے"۔ میں مؤخر الذکر پر توجہ مرکوز کروں گا چونکہ یہ اس سوال کا ارادہ ہے۔

میں کہوں گا کہ نوڈ کو کیا خاص بناتا ہے وہ یہ ہے کہ مصنف نے اسے ویب ایپلیکیشنس کی تعمیر کے دوران IO کو مسدود کرنے سے بچنے کے مقصد کے لئے بنایا ہے۔ نوڈ کمیونٹی کی ثقافت کو غیر مسدود کرنے والے IO کی طاقت پر زور دینا اور اس پر استوار کرنا ہے۔ آپ کو بہت ساری پارٹی لائبریریاں نہیں ملیں گی جو بلاکنگ کال کرتی ہیں۔ نوڈ استعمال کرنے والے ڈویلپر کی حیثیت سے ، آپ کوڈ میں ٹھیک ٹھیک بلاک کرنے کی کارروائیوں کا امکان نہیں رکھتے ہیں۔ جبکہ دوسری زبانوں میں ، ایک بولی ڈویلپر غلطی سے انتہائی غیر موثر بلاکنگ کالز انجام دے سکتا ہے جیسے ڈیٹا بیس کنکشن سے پڑھنا۔

اس کے علاوہ ، آپ کو "متفقہ" کے ل multiple واقعی متعدد ماڈلز کے بارے میں پڑھنا چاہئے اور ہر ایک کے فوائد اور نقد کو سمجھنا چاہئے۔ اس بات کی تعریف کے لئے بونس پوائنٹس کہ اتنے عرصے سے ملٹی تھریڈنگ کیوں قابل قبول تھی۔



جواب 3:

اپنے سر کو لپیٹنے میں نظریاتی اختلافات بہت آسان ہیں۔

واقعہ سے چلنے والے فن تعمیر میں ، آپ کا پروگرام ایک مستقل واحد تھریڈ لوپ میں چلتا ہے (آپ نوڈ میں کچھ ملٹی تھریڈنگ کرسکتے ہیں لیکن ابھی اس کے بارے میں فکر نہ کریں)۔ جب کوئی واقعہ چلتا ہے تو ، پروگراموں میں تفریحی موقع پر نوکری کے لئے کال اسٹیک پر کام کیا جاتا ہے۔

ملٹی تھریڈ فن تعمیر عام طور پر ایک نیا تھریڈ بھیجتا ہے جب اسے کسی کارروائی کا انتظار کرنا پڑتا ہے۔ لہذا ، آپ کسی ڈیٹا بیس پر کال کرتے ہیں اور آپ ایک نیا تھریڈ تیار کرتے ہیں جو آپ کی ضرورت کی تمام چیزوں کو پورا کرے گا اور جو آپ کی ضرورت ہے وہ کرے گا اور اصل دھاگے کو نتیجہ اخذ کرنے یا اس میں دوبارہ شامل ہونے کی ضرورت ہے۔

یہ دونوں طریقے مختلف چیزوں کے ل very بہت کارآمد ہیں۔ واقعہ چلانے والا صارف کے انٹرفیس اور سرور کے لئے بہت اچھا ہے کیونکہ آپ کا پروگرام نہیں جانتا ہے کہ نیا ایونٹ کب ہوگا اور اکثر واقعات پھوٹ پڑیں گے۔ جب کہ کمپیوٹیشنل طور پر بھاری ملازمتوں کے لئے تھریڈنگ ضروری ہے جہاں آپ کسی مسئلے کو چھوٹے چھوٹے ٹکڑوں میں توڑنا چاہتے ہیں (یا آپ اپنے ایک ہی تھریڈڈ لوپ کی حد تک پہنچ رہے ہو)۔