كيف يتم تنفيذ البرمجة المدفوعة بالحدث؟
-
27-09-2019 - |
سؤال
كنت أبحث عن كيفية عمل أطراف node.js twisted و js وأحاول أن أفهم بالضبط كيف يدعم نظام التشغيل عمليات الإدخال/الإخراج باستخدام عمليات الاسترجاعات.
أتفهم أنه أمر جيد لأننا بحاجة إلى مؤشرات ترابط أقل لأننا لسنا بحاجة إلى حظر الخيوط التي تنتظر عمليات الإدخال/الإخراج. ولكن يجب أن يتصل بشيء رد الاتصال بمجرد انتهاء الإدخال/الإخراج.
كيف يتم تنفيذ هذا من قبل نظام التشغيل؟
المحلول
تتمثل إحدى الأساليب في جعل نظام التشغيل يرفع معلومات حول أي شخص ينتظر رد الاتصال إلى بنية البيانات ذات الصلة ، مثل المكافئ في الواصف في الملف الذي تنتظره الإخطار القراءة. عندما يحدث شيء ما لمواصف الملف ، يقوم نظام التشغيل بمسح النوادل لمعرفة ما إذا كان ينبغي إخطار أي شيء. إذا كان ينبغي عليهم ذلك ، فهذا يفعل ذلك. يمكنك أن تقرأ عن تطبيق واحد في هذا ورقة الليمون تقدم FreeBSD's kqueue
آلية. انظر على وجه الخصوص القسم 6 ، "التنفيذ" ، القسمين الفرعيين 3 و 4 ، "النشاط على مصدر الحدث" و "التسليم".
نصائح أخرى
يتم حل هذا في نظام التشغيل باستخدام "مرافق/واجهات إشعار الأحداث I/O" ، على سبيل المثال Epoll, ، تصويت، Kqueue أو حدد.
ألق نظرة على ماهر, وخاصة '' '' حلقة IO/الحدث للحصول على مثال ملموس ، يتم استخدام "أنظمة الإخطار" المذكورة أعلاه. ((java.nio.channels.selector هي طريقة Java Nio لتوفير تجريد لهذا.)
إخلاء المسئولية: أنا ملزم ماهر