ما هي ميزة MicrothRead من Python من Stack-Less من Lua's Coroutine في تطبيق Machine Machine للعبة؟

StackOverflow https://stackoverflow.com/questions/4064594

سؤال

أي ميزة على ثبات الثعبان أقل من لوا من كوروتين؟ ما الفرق عنهم؟

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

المحلول

Python بدون تكديس ومهمة (لم أفعل أي برمجة مع Python بدون تكديس ، لكنني قرأت بعض التفاصيل حول كيفية تنفيذها):

الايجابيات:

  1. خفيفة الوزن معظم الوقت.
  2. لديه جدولة لإدارة ما الذي يحصل على استئناف للم تكتفيه بعد العائد الحالي.
  3. دعم الجدولة الاستباقية. (أي تشغيل لتعليمات X)
  4. قنوات التواصل بين المهام.

سلبيات:

  1. في بعض الأحيان تحتاج إلى مكب C عند الخضوع من المهام. (أي عند الخضوع من بعض عمليات الاسترجاعات C)

لوا 5.1 مع coroutines العادي:

الايجابيات:

  1. وزن خفيف.
  2. تسمح وظائف السيرة الذاتية ()/العائد () بنموذج الاتصال المستهلك/المنتج.

سلبيات:

  1. لا جدولة مدمجة. عليك إدارة استئناف وإنتاج كوروتين.
  2. لا يمكن الاستفادة من وظيفة C ، أو metamethod ، أو ايتراتور. (سيقوم Lua 5.2 بإزالة معظم هذه القيود ، يوفر Luajit 1.1 تحويل C-Stack خفيفة الوزن إلى العائد من أي مكان)
  3. لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)

لوا 5.1 مع concurrentlua:

الايجابيات:

  1. وزن خفيف.
  2. جدولة مع تبديل السياق التعاوني.
  3. لديه نمط erlang من الرسائل التي تمرير التواصل بين المهام.
  4. دعم للرسالة الموزعة الشفافة بين العقد.

سلبيات:

  1. لا يمكن الاستفادة من وظيفة C ، أو metamethod ، أو ايتراتور. (مرة أخرى معظم هذه القيود تسير مع لوا 5.2 و Luajit)
  2. لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)

لوجيت 2.0 بيتا مع concurrentlua:

الايجابيات:

  1. وزن خفيف.
  2. جدولة مع تبديل السياق التعاوني.
  3. لديه نمط erlang من الرسائل التي تمرير التواصل بين المهام.
  4. دعم للرسالة الموزعة الشفافة بين العقد.
  5. الدعم السريع جدا JIT يجعل لوا أسرع بكثير ثم بيثون

سلبيات:

  1. قد لا تكون قادرة على الخضوع من وظيفة C الآن. قد يتم دعم هذا في الإصدارات المستقبلية.
  2. لا يوجد دعم وقائي في الجدولة. (سيتعين عليه استخدام خطافات التصحيح)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top