ما هي ميزة MicrothRead من Python من Stack-Less من Lua's Coroutine في تطبيق Machine Machine للعبة؟
-
27-09-2019 - |
سؤال
أي ميزة على ثبات الثعبان أقل من لوا من كوروتين؟ ما الفرق عنهم؟
المحلول
Python بدون تكديس ومهمة (لم أفعل أي برمجة مع Python بدون تكديس ، لكنني قرأت بعض التفاصيل حول كيفية تنفيذها):
الايجابيات:
- خفيفة الوزن معظم الوقت.
- لديه جدولة لإدارة ما الذي يحصل على استئناف للم تكتفيه بعد العائد الحالي.
- دعم الجدولة الاستباقية. (أي تشغيل لتعليمات X)
- قنوات التواصل بين المهام.
سلبيات:
- في بعض الأحيان تحتاج إلى مكب C عند الخضوع من المهام. (أي عند الخضوع من بعض عمليات الاسترجاعات C)
لوا 5.1 مع coroutines العادي:
الايجابيات:
- وزن خفيف.
- تسمح وظائف السيرة الذاتية ()/العائد () بنموذج الاتصال المستهلك/المنتج.
سلبيات:
- لا جدولة مدمجة. عليك إدارة استئناف وإنتاج كوروتين.
- لا يمكن الاستفادة من وظيفة C ، أو metamethod ، أو ايتراتور. (سيقوم Lua 5.2 بإزالة معظم هذه القيود ، يوفر Luajit 1.1 تحويل C-Stack خفيفة الوزن إلى العائد من أي مكان)
- لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)
لوا 5.1 مع concurrentlua:
الايجابيات:
- وزن خفيف.
- جدولة مع تبديل السياق التعاوني.
- لديه نمط erlang من الرسائل التي تمرير التواصل بين المهام.
- دعم للرسالة الموزعة الشفافة بين العقد.
سلبيات:
- لا يمكن الاستفادة من وظيفة C ، أو metamethod ، أو ايتراتور. (مرة أخرى معظم هذه القيود تسير مع لوا 5.2 و Luajit)
- لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)
لوجيت 2.0 بيتا مع concurrentlua:
الايجابيات:
- وزن خفيف.
- جدولة مع تبديل السياق التعاوني.
- لديه نمط erlang من الرسائل التي تمرير التواصل بين المهام.
- دعم للرسالة الموزعة الشفافة بين العقد.
- الدعم السريع جدا JIT يجعل لوا أسرع بكثير ثم بيثون
سلبيات:
- قد لا تكون قادرة على الخضوع من وظيفة C الآن. قد يتم دعم هذا في الإصدارات المستقبلية.
- لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)
لا تنتمي إلى StackOverflow