"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > جافا سكريبت ليست خيطًا واحدًا !!

جافا سكريبت ليست خيطًا واحدًا !!

تم النشر بتاريخ 2024-07-31
تصفح:585

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

ولكن في الواقع يستخدم محرك V8 وNode.js مكتبة C تسمى libuv للوصول إلى ستة سلاسل رسائل إضافية. يتم استخدام اثنين منها للقيام بجمع البيانات المهملة ويتم استخدام الباقي للقيام بمهام الخلفية مثل البرمجة غير المتزامنة.

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

Javascript is NOT single threaded!!
عند الانتهاء من التعليمات البرمجية غير المتزامنة، يتم دفع وظيفة رد الاتصال إلى قائمة انتظار الأحداث مع وجود خطأ أو البيانات المطلوبة. ثم تقوم حلقة الحدث بدفعها إلى مكدس الاستدعاءات ونحصل على النتيجة لفهم ذلك باستخدام بعض التعليمات البرمجية. دعونا نلقي نظرة على طريقة readfile لوحدة fs.

fs.readFile("demo.text","utf8",(err,data)=>{
    if(error){       
        return error
    }
    console.log("output",data);
})

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

Javascript is NOT single threaded!!

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

بيان الافراج تم نشر هذه المقالة على: https://dev.to/roshankbadola/javascript-is-not-single-threaded-3b9a?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3