سؤال

لدي سؤالان noob:

1) لماذا يتم تشغيل Node.js في موضوع واحد؟ لماذا لا تستخدم العملية نفسها فقط؟ أو ما هي مزايا تشغيله في موضوع بدلاً من العملية؟

2) ماذا يحدث إذا تحطمت مؤشر ترابط في عملية (أدرك أن الاستثناء غير المعالج سيؤدي إلى خروج العملية) ، ولكن ماذا يحدث إذا تم التقاطه بشكل صحيح؟ أو مع استثناءات مثل استثناءات النقطة العائمة. هل ستتعطل العملية أيضًا؟

هل كانت مفيدة؟

المحلول

أعتقد أنك مرتبك بعض الشيء بشأن معنى "الخيوط الفردية" في هذه الحالة. تستخدم Node.js نفسها مؤشرات ترابط متعددة في الخلفية للتعامل مع مكالمات خلاف ذلك بطريقة غير متزامنة.

Node.js Core ، محرك JavaScript ، واحد ملولب. إن الافتقار إلى الخيوط المتعددة وتوافر حلقة الحدث يجعل البرمجة أسهل كثيرًا. باختصار ، ليس عليك التعامل مع جميع مشكلات التزامن التي يجلبها الخيوط المتعددة معه رمزك أكثر حتمية بهذه الطريقة.

في حالة تعطل مؤشر ترابط ، يكون الأمر غير ذي صلة تمامًا بما إذا كان هذا هو الوحيد أو واحد من العديد ، إذا تعطل الكود بأفضل شيء يمكن أن تأمل فيه هو أن البرنامج يموت معه ، فلن يكون هناك شيء أكثر إزعاجًا من استمرار البرنامج حالة تالفة جزئيا. تخيل أن الخيط الذي يتحطم كان مسؤولاً عن حفظ البيانات على القرص ، والآن تستمر البرنامج في العمل دون حفظ مرة أخرى.

نصائح أخرى

  1. تم تصميم Node.js لتكون خفيفة الوزن للغاية ، ولا يسمى إلا عند الحاجة. لذلك كل موضوع يتعامل مع طلب واحد ثم يخرج. إذا قمت بالاتصال /myPage ، فسيقوم Node.js بمعالجة الطلب ثم ينتهي. يؤدي هذا إلى أداء أفضل مع الحفاظ على بصمة صغيرة
  2. إذا كان هناك استثناء ، وتم التعامل معه بشكل صحيح ، فسيتم إلقاء خطأ وفقًا لكيفية تعريفك به. JavaScript هي لغة كل شيء أو لا شيء. أي خطأ سيؤدي إلى إلقاء جافا سكريبت خطأ وتحطم ، ولهذا السبب تحتاج إلى التأكد من التعامل مع جميع الأخطاء الممكنة.

إن تشغيل برنامج في عملية أو خيوط واحدة هو نفس الشيء. كل عملية لها موضوع رئيسي. اعتمادًا على لغة البرمجة والمنصة ، يمكن استخدام مؤشرات ترابط إضافية لتشغيل أجزاء من البرنامج بشكل متزامن. Node.js ليس لديها إمكانية لبدء مؤشرات ترابط إضافية.

وبهذه الطريقة ، ليس لديك إمكانية تشغيل أجزاء من برنامجك بالتوازي إلى جانب بدء عمليات جديدة. تشترك مؤشرات ترابط متعددة في عملية واحدة في نفس الذاكرة ، في حين أن العمليات لا. عندما تحتاج إلى مشاركة المعلومات بين العمليات ، يجب عليك استخدام تمرير الرسائل.

عيب تمرير الرسالة هو أنه أبطأ من مشاركة المعلومات من خلال الذاكرة. الميزة هي أنه لا يتعين عليك التفكير في حالة قابلة للتغيير للكائنات في ذاكرتك وكيفية التأكد من أن هذه الكائنات لا تصبح غير متسقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top